在C语言中什么是指针和数组等价

时间:2020-11-23 18:03:46 笔试题目 我要投稿

在C语言中什么是指针和数组等价

  在C语言中对数组和指针的困惑多数都来自这句话。说数组和指针“等价”不表示它们相同, 甚至也不能互换。它的意思是说数组和指针的算法定义可以用指针方便的访问数组或者模拟数组。

  特别地,等价的基础来自这个关键定义:

  一个T 的数组类型的左值如果出现在表达式中会蜕变为一个指向数组第一个成员的指针(除了三种例外情况); 结果指针的类型是T的指针。

  这就是说, 一旦数组出现在表达式中, 编译器会隐式地生成一个指向数组第一个成员地指针, 就像程序员写出了&a[0] 一样。例外的.情况是, 数组为sizeof 或&操作符的操作数, 或者为字符数组的字符串初始值。

在C语言中什么是指针和数组等价

  作为这个这个定义的后果, 编译器并那么不严格区分数组下标操作符和指针。在形如a[i] 的表达式中, 根据上边的规则, 数组蜕化为指针然后按照指针变量的方式如p[i] 那样寻址, 如问题6.2 所述, 尽管最终的内存访问并不一样。如果你把数组地址赋给指针:

  p = a;

  那么p[3] 和a[3] 将会访问同样的成员。

【在C语言中什么是指针和数组等价】相关文章:

简述数组与指针的区别12-13

C++笔试题:关于链表和指针12-17

C语言中一个结构不能包含指向自己的指针12-27

c语言指针面试常见问题09-28

C语言中break与continue的区别12-23

函数指针的定义是什么12-19

Javascript的常规数组和关联数组的对比小结11-17

C++面试常用问题:"引用"与指针的区别12-11

javascript学习笔记--数组和对象11-11