c - C中的自由指针是什么?

标签 c arrays pointers

我了解到在 C 中声明数组有两种方法:

int array[] = {1,2,3};

和:

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

为什么 arr 被称为自由指针?为什么我不能更改数组中包含的地址,而我可以使用数组来更改地址?

最佳答案

正如评论中所说,您从错误的来源学到了一些不正确的东西。

在第二种情况下,arr 不是数组,而是指针。一个指针(如果分配成功)恰好包含可以容纳三个 int 的内存块的地址,但这不是一个数组。

这种困惑可能来自于数组在某些上下文中“衰减”为指针的事实,但这并不意味着它们是等价的。

关于c - C中的自由指针是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45192988/

相关文章:

c++ - 我可以删除和删除下面的指针列表吗

c - 指针有问题,无法在标题中解释

c - 制作一个 usergiven_character*usergiven_repeatsinthestring(重复次数) 的字符串

python - 在 Python 的 Cython 方法中传递整数列表的 numpy 数组

javascript - React json 获取值

python - 以正确的顺序从数组构建 block 矩阵

php - 最初从 MySQL 数据库中获取一个数组,并在每次用户看到它时取消设置它的一个元素是不是很糟糕?

c - 在 C 中传递二维数组

c - 在不调用 free() 的情况下,使用 memset() 写入的内存会在内存中保留多长时间?

java - 在正方形或矩形矩阵上添加对角线的算法,从右开始