c - 数组名代表什么?

标签 c arrays pointers

<分区>

C 的新手。当我声明以下数组时:

char arr [3] = {'a', 'b', 'c'};

以下代表什么?

 arr

以下有什么区别?每一个具体代表什么?

arr and &arr

当您将数组的起点作为参数传递给接受一维数组的函数时会发生什么?值是否复制到新的内存块?

我知道在 C 语言中,数组只是组合在一起的分配的内存块 block ?是对的吗?我正在尝试围绕 C 中的数组进行思考,但我有点困惑。请提供尽可能多的见解。

最佳答案

arr &arr&arr[0]

char arr[3] = {'1','2','3'};

--------------------
|  1    | 2   |  3 |
--------------------
   |
   |
arr &arr and &arr[0]

所以当涉及到它们包含的内容时没有区别。 都有数组的起始地址。

在 C 中,数组是相似数据类型元素的连续集合。

如前所述,它们包含的内容相同,但请注意以下几点。

&arr 给出地址让我们说0x1000arr 也给出了 0x1000

现在递增指针 arr 将为您提供数组的下一个元素的地址,即 &arr[1]

`arr+1` != `&arr+1`

使用 &arr+1 时,值 &arr 会增加数组的大小(在本例中为 3);它不像指针那样指向数组中的下一个元素。

因此它们都是不同的类型,在使用时应牢记这一点。

PS:数组名不是可修改的左值。

关于c - 数组名代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469808/

相关文章:

c - C 中的长 double

用于在编译时检测对称数组的 C++ 模板编程

c - 循环和字符数组在 C 中如何工作?

c - 我如何将该字符串指向该结构?

c - 每个客户端都有单独的启动目录

c - DLL 未从 LabVIEW 写入 txt 文件?

c - 将结构数组作为参数传递给 C 中的函数

javascript - 在数组中搜索文本区域仅查找子字符串

C指针。获取空列表

const 指针固定到可变变量