나는 C 언어를 배우고 실제로 어쩌면 명백한 문제에서 멈췄다.포인터를 역 참조 해제
void allocateArray(int **arr, int size, int value) {
*arr = (int*)malloc(size * sizeof(int));
if(*arr != NULL) {
for(int i=0; i<size; i++) {
*(*arr+i) = value;
}
}
}
발신자는 :
int *vector = NULL;
allocateArray(&vector,5,45);
이 이해에서 코드를 C 포인터를 사용하고 있습니다. 문제는이 라인이 어떻게 작동하는지 내가 상상도 할 수 있다는 것입니다 :
*(*arr+i) = value;
더 정확하게 할 우리가 별을 역 참조 2를 사용하는 대신 단지 작성해야하는 이유 모르는, (*arr+i) = value;
그것은 것 어떻게 그리고 왜 그것이 그렇게되어야하는지에 대한 좋은 예를 얻는 것이 좋을 것입니다.
무엇입니까'INT ** ar' : 코드의 두 번째 줄은 다음과 같이 다시 쓸 수 있도록 C 당신이,
malloc
캐스팅 할 필요가 없습니다? 두 별표가 함께 무엇을 의미합니까? –int * p = malloc (size * sizeof (int));를 쓰면 훨씬 쉬워진다. * arr = p; 그리고 나서 * arr 대신에 p를 사용하십시오. – gnasher729
@ PM77-1 int에 대한 포인터에 대한 포인터입니다. 당신은 바로 gnasher729입니다. 내가 이해할 때 지금은 쉽다. :) – python