정수 포인터 배열을 설정하려고합니다. 프로그램은 인덱스 i의 포인터를 값 2 * i의 정수를 가리 키도록 설정합니다. 그런 다음 프로그램은 0, 4, 6, 8이어야하는 처음 5 개의 포인터 요소의 pointee를 인쇄해야합니다.정수 포인터 배열 설정
어떤 이유로 세그먼트 화 오류가 발생합니다. 아무도 왜 이것이 일어나고 내가 그것을 고칠 수 있는지 말해 줄 수 있습니까?
마지막 줄을 "arr [index] = & i;"로 바꾸려고했는데 세그먼트 화 오류가 아니지만 여전히 잘못된 결과를 제공합니다.
도움이 될만한 점은 포인터 배열을 시작하는 것입니다.
#include <stdio.h>
void setArr (int);
int * arr[10]; // array of 10 int pointers
int main(int argc, char *argv[])
{
int i;
setArr(0);
setArr(1);
setArr(2);
setArr(3);
setArr(4);
for(i=0; i<5;i++)
printf("arr [%d] = %d\n", i, *arr[i]); /* should be 0, 2, 4, 6, 8 */
return 0;
}
/* set arr[index], which is a pointer, to point to an integer of value 2*index */
void setArr (int index){
int i = 2 * index;
* arr[index] = i;
}
'int * arr [10]'은 단지 10 개의 포인터이며 유효한 메모리를 가리 키지 않습니다. 'int arr [10]'과'arr [index] = i;' – VoidPointer
을 할당하거나 사용하고 전역 변수 plox를 사용하지 마십시오! –