数组指针与指针数组的区别_list和数组的区别

数组指针与指针数组的区别_list和数组的区别数组指针 和 指针数组 的区别目录 0. 引言1. 数组指针2. 指针数组3. 小结本文使用运行环境如下:操作系统:Ubuntu Linux 18.04 64 bit编译环境:gcc

数组指针 和 指针数组 的区别   目录 0. 引言1. 数组指针2. 指针数组3. 小结   本文使用运行环境如下:   操作系统:Ubuntu Linux 18.04 64 bit   编译环境:gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)   0. 引言   和且听之类似,实际完全不同。数组指针意在“指针”,强调的是指针,即“指向数组的指针”;指针数组意在“数组”,强调的是数组,即“成员都是指针的数组”。   本文尝试阐述二者的不同之处。   1. 数组指针   数组指针如何定义与使用?先看一个示例程序   执行结果:   
image-20201021133956785   是一个有10个int成员的数组,数组类型为,是这个数组类型的指针并指向了数组。在代码第20行和21行的打印中,指向了数组,因此和必然相等;   22行对指针进行指针运算,指针指向的类型是,这里是64位系统64位程序,对指针+1运算就转化成了,数组占用内存大小为40个字节,因此指针+1之后将偏移40个字节(数组的大小),刚好 – = = ;   这里数组指针之后其指向了数组范围之外,这样一看指针运算似乎就没什么用了,还有内存越界的风险。   
image-20201021134120410   再看13行往下的代码,定义了一个类型为的二维数组,同样用一个数组指针指向数组,28行对指针+1时,其结果也是和数组偏移一个成员之后的地址相同。这里可以看出指针运算的原理是通用的,对指针+1将偏移指针指向对象的类型大小。   那么指针+1后偏移了多少字节? – = = ,即一个成员的大小,就是数组第1行所占用的空间,似乎不够有说服力,30行对+1后的位置进行取值,结果表明+1后指向了二维数组第2行第1个素值为3,即+1后在二维数组中“换了一行”,因此有的地方也将数组指针称为“行指针”。   
image-20201021134545214   2. 指针数组   顾名思义,指针数组是一个成员为“同一指针类型的数组”,这里也通过一个示例程序进行说明。   运行结果:   
image-20201021135423758   指针数组较之数组指针易于理解,是一个有4个成员的数组,每个成员都是类型,由于每个成员都是,因此既表示p数组的第i个成员,又表示某个对象的地址。要访问p数组中保存的对象的地址所指向的对象,就需要对p数组中的成员(取相应地址保存的数据),12行中是对p数组中的第i个成员,这种方式能够正常访问合法的地址对象。   3. 小结   数组指针本质是指针,是指向数组的指针;指针数组本质是数组,是保存指针的数组;   从对指针数组和数组指针的分析来看,虽然两者都和指针相关,但指针和数组不可同日而语,对二者的混淆很大可能是中文概念的混淆。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/35612.html

(0)
上一篇 2024年 9月 9日 下午9:39
下一篇 2024年 9月 9日

相关推荐

关注微信