Cha*_*ati -2 c arrays pointers
我了解到有两种方法可以在C中声明一个数组:
int array[] = {1,2,3};
Run Code Online (Sandbox Code Playgroud)
和:
int* arr = malloc(3*sizeof(int));
Run Code Online (Sandbox Code Playgroud)
为什么arr被称为自由指针?为什么我不能更改数组中包含的地址,而我可以使用数组?
正如评论中所说,你从一个不好的来源学到了不正确的东西.
在第二种情况下,arr不是数组,它是一个指针.一个指针(如果分配成功)恰好包含一个可以容纳三个ints 的内存块的地址,但这不是一个数组.
这种混淆可能来自于数组在某些情况下"衰减"到指针的事实,但这并不能使它们等效.