鱼C论坛

 找回密码
 立即注册
查看: 1514|回复: 3

[已解决]关于指针数组的问题,求解答/

[复制链接]
发表于 2017-10-18 23:17:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
char *p[4]={"hello","asdasd","howare","cjc"}; 指针数组不是储存的是地址吗?地址的长度应该都一样吗?为什么储存地址的地址长度都不一样啊? p  p+1 p+2 他们之间相差的长度都不一样?
最佳答案
2017-10-18 23:41:16
看图片打印的第一行:首先每个数组元素都是指针,要想打印这些指针的地址就要得到指针,这点可以理解吧。那指针数组得到指针元素就是指针的下标呀,比如你要得到"asdasd"这个字符串的指针,就要p[1],p[1]存放的就是指向这个字符串的指针,然后就可以打印这个指针地址了。
第二行:就是你说的不一样的地方,p是个指针,p+1就是在p的基础上加上指针的存储大小,我最后一行打印的就是p在我电脑系统上占的大小,是4个字节,那p到p+1就相差4个字节,地址就相差4,同理,p+2到p+1也是4。
不要把指向的地址和指针自身占用空间混起来,一个是对外的,一个是对内的,不一样的
QQ拼音截图未命名.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-18 23:41:16 | 显示全部楼层    本楼为最佳答案   
看图片打印的第一行:首先每个数组元素都是指针,要想打印这些指针的地址就要得到指针,这点可以理解吧。那指针数组得到指针元素就是指针的下标呀,比如你要得到"asdasd"这个字符串的指针,就要p[1],p[1]存放的就是指向这个字符串的指针,然后就可以打印这个指针地址了。
第二行:就是你说的不一样的地方,p是个指针,p+1就是在p的基础上加上指针的存储大小,我最后一行打印的就是p在我电脑系统上占的大小,是4个字节,那p到p+1就相差4个字节,地址就相差4,同理,p+2到p+1也是4。
不要把指向的地址和指针自身占用空间混起来,一个是对外的,一个是对内的,不一样的
QQ拼音截图未命名.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-18 23:49:30 | 显示全部楼层
丶忘却的年少o 发表于 2017-10-18 23:41
看图片打印的第一行:首先每个数组元素都是指针,要想打印这些指针的地址就要得到指针,这点可以理解吧。那 ...

我的编译器是DEV的,跟你编的程序一样。但是地址相差有4的有8的,不像你都是4,所以我刚才挺困惑的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-19 00:01:23 From FishC Mobile | 显示全部楼层
哦,这样呀,那你要带图上来,不然没办法知道你的问题是什么情况。不过一般都是准的,应该是编译器算法不一样。你可以单独声明一个指针x,然后打印下x+1,x+2看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 23:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表