指针问题......高手进来帮下忙啊...

bf120178381 2007-04-17 11:19:45
#include <iostream.h>
void main()
{
int a,b;
char * pn[]={"abc","efjxcvbxcvbcxvbcxvbxcvbxcvbxcvh","ijkl","ooooo"};
int num=sizeof(pn)/sizeof(pn[0]);
a=sizeof(pn);
b=sizeof(pn[0]);
cout<<"num="<<num<<",a="<<a<<",b="<<b<<endl;
}

//num=3,a=16,b=4
-------------------------------------------------
为什么a=16,b=4那帮我解释一下啊,我有点晕...尤其指针char* 它sizeof(pn[0])为什么占4个字节那??VC开发环境.如果认为问题提的垃圾的话大可以回避....
...全文
150 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wltg2001 2007-04-17
  • 打赏
  • 举报
回复
是对的。每一个指针是4个字节,a是pn这个数组的大小,这个数组你定义成了4个指针数组,当然是16了,b是pn[0],这就是一个指针,当然是4了。num就是16除以4,还不是4
blue_zyb 2007-04-17
  • 打赏
  • 举报
回复
//num=3,a=16,b=4
--------------------
明明是num = 4嘛。。。

数组pn的元素类型是char*,所以p[0]是char*类型,sizeof(p[0]) == sizeof(char*) == 4;

至于sizeof(pn),则是数组pn所占字节的数目,由于pn用4个字符串初始化,所以pn包含4个元素,每个元素的类型为char*,大小为4,所以sizeof(pn) == sizeof(char*) * 元素个数 == 4 * 4 == 16
taodm 2007-04-17
  • 打赏
  • 举报
回复
指针不是4个字节,那你想它应该多少?
bf120178381 2007-04-17
  • 打赏
  • 举报
回复
顶下,小生有礼啦....

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧