c-在for循环中分配数组,输出无意义



我试图动态分配一个固定大小的整数数组,但在填充数组时会出现问题。

#include <stdio.h>
#include <stdlib.h>
#define SIZE_OF_ARRAY   5
int main(void) {
int * myArr;
myArr= (int*)malloc(SIZE_OF_ARRAY * sizeof(int));
if (myArr == NULL) {
return EXIT_FAILURE;
}
for (int i = 0;i<SIZE_OF_ARRAY;i++) {
*(myArr +1)=i;
printf("myArr[%d]= %dn", i, myArr[i]);
}
return EXIT_SUCCESS;
}

输出

myArr[0]= 0
myArr[1]= 1
myArr[2]= 0
myArr[3]= 805306368
myArr[4]= -1739194352

为什么分配只能工作到数组的第二个索引?

您不初始化数组的元素。所有分配都在此处完成对元素[1]的分配:

*(myArr +1)=i;

*(myArr + i) = i;替换*(myArr +1)=i;

*(myArr +1)是数组的元素1。您可能有意使用*(myArr +i)

今天太少咖啡

*(myArr +i)=i;

myArr[i]=i;

做的工作

是否意味着*(myArr + i) = i(或只是myArr[i] = i(?

在常量+1偏移的情况下,当前代码将只更改第二个元素

第一个元素"偶然"计算为0,因为它从未分配过值,这可能会错误地支持初始断言。。

最新更新