为什么我的C动态数组会给我访问冲突?

时间:2016-08-17 04:00:46

标签: c

这是我的代码。

int *arr;  // Indented this line
int sizeOfArr = 0;

printf("Enter size of arr.\n");
scanf("%d", &sizeOfArr);

arr = malloc(sizeOfArr * sizeof(int));

for (int i = 0; i < sizeOfArr; i++) {

    scanf("%d", arr[i]);

}

例如,如果动态数组的大小为5,并且我继续输入输入“1 2 3 4 5”,则整个程序崩溃并给我访问冲突。

1 个答案:

答案 0 :(得分:3)

为了存储数组元素,您需要使用scanf("%d", &arr[i]);代替 scanf("%d", arr[i]);

&中的

C用于表示变量的地址。因此,通过使用&arr[i],您告诉程序将输入变量存储在数组ith的{​​{1}}索引处。

所以正确的代码将是

arr[]