문제

이 작업 위치의 인터뷰 내용에 직면했다.그들은 우리가 할 수 있는지 여부 realloc 배열,내가 그렇습니다.그들은 물었다-그럼 왜 우리에게 필요 포인터로 대부분의 사람들은 이유를 제공하는 폐기물을 메모리를 적게 사용합니다.나가지 못하게 만족스러운 답변.어떤 경우에 몸을 할 수 있게 만족스러운 답변,나는 의무입니다.을 언급하시기 바랍에는 어떤 상황 위의 문을 부정 할 수있.

감사합니다.

도움이 되었습니까?

해결책

동적으로 할당 된 배열 만 재 할당 할 수 있습니다. 정적으로 할당 된 경우 [안전하게] 재 할당 할 수 없습니다.*

포인터는 메모리에서 데이터 주소를 유지합니다. C ++ 및 Malloc/Free C의 신규/삭제 연산자를 사용하여 동적으로 할당, 거래 및 재 할당 할 수 있습니다.

나는 당신이 읽을 것을 강력히 제안합니다 C 프로그래밍 언어 Kernighan과 Ritchie와 다음과 같은 견고한 C ++ 텍스트 처음부터 C ++ Herbert Schildt에 의해.

동적 메모리, 포인터, 오프셋 등을 사용하면이 두 언어를 사용하는 데 기본이됩니다. 그들이 어떻게 일하는지, 왜 존재하는지 모르면 잠재적 인 고용주가 당신을 거절 할 가능성이 높습니다.

*컴파일러 그렇지 않아야합니다 정적으로 할당 된 것을 재 할당 할 수 있지만, 그렇다면 동작은 정의되지 않습니다.

다른 팁

문구는 약간 이상하지만, 인터뷰 질문은 배열, 포인터, 동적 메모리 할당 등에 대해 당신이 아는 것을 설명하기 위해 설계된 개방형 질문 인 것 같습니다. 후보는 그 사이의 차이점을 분명히 밝힙니다 int *a = malloc(10 * sizeof(int)); 그리고 int a[10];. 후속 질문은 그다지 좋지 않지만, 아마도 후보자를 포인터와 배열의 차이의 방향으로, 생각의 기차를 세우려는 시도 일 것입니다.

확인.할 수 없습니다 realloc 배열이 있는 정적으로 선언했다.의 목적에 포인터를 사용하여(대신에 정적으로 선언된 array),될 것입할 수 있도록 realloc 습니다.내 생각하는,기술적으로 정확할 수 있습 realloc 정적으로 정의 배열을 전달하여 그것의 포인터이지만,I wouldn't want to.동작이 정의 되지 않는 경우 포인터를 기억하지 않은 할당된 의해 malloc.

포인터를 사용하는 것이 "메모리를 낭비하는 방법"을 실제로 이해하지 못합니다. 부동산 함수 : -

void *realloc(void *ptr, size_t size);

메모리에 대한 포인터를 사용하여 매개 변수로 크기를 조정합니다. 또한 동적 메모리보다 포인터에 대한 더 많은 용도가 있으며, 예를 들어 참조로 전달됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top