开发者社区> 问答> 正文

数组名称是指针吗?

数组名称是C中的指针吗?如果不是,数组名称和指针变量之间有什么区别?

展开
收起
保持可爱mmm 2020-01-16 16:49:39 540 0
1 条回答
写回答
取消 提交回答
  • 数组是数组,指针是指针,但是在大多数情况下,数组名称会转换为指针。经常使用的术语是它们衰减到指针。

    这是一个数组:

    int a[7]; a 包含七个整数的空间,您可以通过赋值在其中一个中放置一个值,如下所示:

    a[3] = 9; 这是一个指针:

    int *p; p不含整数的空格,但可以指向整数的空格。例如,我们可以将其设置为指向数组中的一个位置a,例如第一个位置:

    p = &a[0]; 令人困惑的是,您也可以这样写:

    p = a; 这并没有数组的内容复制a到指针p(无论这将意味着)。而是将数组名称a转换为指向其第一个元素的指针。因此该分配与上一个分配相同。

    现在,您可以p以类似于数组的方式使用:

    p[3] = 17; 这样做的原因是C中的数组解引用运算符[ ]是根据指针定义的。x[y]方法:先从指针x,步y以后有什么指针指向元素向前,然后采取一切是存在的。使用指针算术语法,x[y]也可以写成*(x+y)。

    为了使其与普通数组(例如our)一起使用a,必须首先将ain中的名称a[3]转换为指针(指向中的第一个元素a)。然后,我们将3个元素向前移动,并采用其中的任何内容。换句话说:将元素放在数组中的位置3。(这是数组中的第四个元素,因为第一个元素的编号为0。)

    因此,总而言之,在大多数情况下,C程序中的数组名称都将转换为指针。一个例外是当我们sizeof在数组上使用运算符时。如果a在这种情况下被转换为指针,sizeof a则将给出指针的大小,而不是实际数组的大小,这将毫无用处,因此在这种情况下a意味着数组本身。 问题来源于stack overflow

    2020-01-16 16:49:53
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载