我了解到在 C 中声明数组有两种方法:
int array[] = {1,2,3};
和:
int* arr = malloc(3*sizeof(int));
为什么 arr 被称为自由指针?为什么我不能更改数组中包含的地址,而我可以使用数组来更改地址?
最佳答案
正如评论中所说,您从错误的来源学到了一些不正确的东西。
在第二种情况下,arr
不是数组,而是指针。一个指针(如果分配成功)恰好包含可以容纳三个 int
的内存块的地址,但这不是一个数组。
这种困惑可能来自于数组在某些上下文中“衰减”为指针的事实,但这并不意味着它们是等价的。
关于c - C中的自由指针是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45192988/