鱼C论坛

 找回密码
 立即注册
查看: 3807|回复: 10

指针数组有个问题麻烦大家解答

[复制链接]
发表于 2022-9-5 16:59:28 | 显示全部楼层
本帖最后由 桃花飞舞 于 2022-9-5 17:01 编辑
jhq999 发表于 2022-9-5 16:49
char*pl[5]是字符指针数组
pl[0]就是“让编程改变……”这个常量字符串的指针
pl[1]是“Juse do it… ...


“让编程改变……”  “Juse do it……" 是存储在哪里呢?常量区还是栈上面?为什么?应该是常量区。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 17:09:58 | 显示全部楼层
本帖最后由 桃花飞舞 于 2022-9-5 17:11 编辑


如果是的话能不能理解
成printf后面直接用数组下标来访问里面的变量,所以不需要加*? 不能理解成这样。printf后面直接用数组下标来访问里面的变量,p[0] p[1] p[2]  是指针变量,存储的依然还是地址。  之所以不要加星号是因为 printf 的格式符为%s  时只需要传地址就可以访问整个字符串。 %d 时 需要传的是int类型的数据 而不是int * 所以 要给p[0] p[1] p[2] 加星号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 17:53:33 | 显示全部楼层
jhq999 发表于 2022-9-5 17:24
百度一下就知道了

没百度到。一维数组char * p = "Juse do it "; 字符串是存储在常量区,而char *p[3] 这个指针数组里面存储的是地址,所以字符串应该也是在常量区存储的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 01:00:22 | 显示全部楼层
本帖最后由 桃花飞舞 于 2022-9-6 05:27 编辑
jhq999 发表于 2022-9-5 18:39
https://blog.csdn.net/mmindian/article/details/125991827


麻烦你了,我从别的地方确认了这个问题。楼主的贴子最别扭的地方就是数组元素是指针,这文章从另一个方面说明了一维数组char* p = "Juse do it",字符串存储在静态存储区, 指针指向字符串,字符串存储在常量区,所以char *p[3] 这种指针数组里面存的是字符串的首地址,字符串同样是存储在静态存储区,常量区。不过这让我想到了子函数中调用malloc函数也可以return p; 返回p指针 然后在主函数中用char * parr;来接收,malloc分配的的空间在堆上,也可以达到类似的效果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-2 05:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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