关于数组指针中sizeof

关于数组指针中sizeof

char *s[]={"hello","world","good","bye"};
 cout<<sizeof(s)/4<<endl;

为什么结果为4,为什么sizeof(s[0]),sizeof(s[1]),sizeof(s[2]),sizeof(s[3])都为4.

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

指针变量所占的字节是4,正是因为sizeof(s[0]),sizeof(s[1]),sizeof(s[2]),sizeof(s[3])每个都为4,所以通过sizeof(s)/4才能判断出字符串数组中有几个元素。所以这个时候,如果字符串数组中有5个元素,那么sizeof(s)/4得到的结果就是5。

  • 風过无痕 提问者 #1
    为什么指针变量所占的字节是4,它不是char 类型吗。
    2018-06-01 23:27:30
  • imooc_澈 回复 提问者 風过无痕 #2
    你好,指针不同于一般变量,存的是变量的地址,在同一架构下地址长度都是相同的(cpu的最大寻址内存空间),因此指所占的字节长度跟它所指向的变量所占字节长度没有关系,
    2018-06-03 14:01:15
  • 風过无痕 提问者 #3
    非常感谢!
    2018-06-03 21:28:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       594    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师