指针和数组很多情况下,用法差不多,数组也被隐性转换成指针用,但是不能说数组就是指针,代表的是完全不同的东西。
定义数组的时候会分配一些类型相同的元素空间,而指针只不过是指向某一类型空间的地址而已,本身是一个数据类型,类型的值就是一个地址而已。
之所以很多情况下感觉类似,是因为数组在除了&运算符或者sizeof的时候会被隐性转换成指针使用。
例1:
上面两个都被解释成数组。也就是在 sizeof 和 & 的时候,数组是表示数组本身
例2:
这两个直接给出警告,提示数组是int* 类型,输出的值是一个好像很随意的数字。其实这个时候数组当成了指向数组首元素的指针了,而这个数字就是首元素地址的10进制
例3:
两个都打印出数组的第3个元素 3,而且不会有任何警告,那说明这个时候是 arr[2] 和 *(arr+2) 都是int类型了,而且应该是一样的
上面那个比较好理解,很常见,下面那个什么鬼?其实下面arr这里也是被隐适转换成了数组首元素,+2后,指针指向第3个元素,最后 *符号 取值
其实arr[2] 实际就是按照下面的方式转换的,只不过这样书写方便一点。
例4
这5个也完全一样,都是打印出第二个子元素中的第二个元素 5,编译器也不会有任何警告,说明它们也是一样的
试着分析下
标签:转换成,arr,元素,再谈,数组,类型,指针 来源: https://www.cnblogs.com/fuyun2000/p/16690120.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。