关于指针数组在内存中占用的字节数问题!

YZZ2086 2008-09-24 12:56:26
定义这样一个指针数组:
char &pstr[]={"Robert",
"hello!",
"world!"
};

用sizeof pstr 求得为12
用size pstr[0] 求得为4

每个数组元素占用的字节数是 一样的 !
问题是为什么会一样,用sizeof求的什么量的占用的字节数,


无论给该数组赋予多长的字符串 其结果都一样 为什么??
...全文
536 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2008-09-24
  • 打赏
  • 举报
回复
先把代码编译通过了再来发问。
beyondlwm 2008-09-24
  • 打赏
  • 举报
回复
I got the answer from your topic.
allenpettle 2008-09-24
  • 打赏
  • 举报
回复
LS正解。
说的很清楚哈。
Pause_break 2008-09-24
  • 打赏
  • 举报
回复
char *pstr[]={"Robert",
"hello!",
"world!"
};
字符串分配在常量区,sizeof(pstr)得到的是pstr数组的长度,4*3=12.而sizeof(pstr[0]))求的是一个指向常量区的指针所指向的内存,这就等同于 char *p=“Robert”;求sizeof(p)的值,MSDN上说“The sizeof operator cannot return the size of dynamically allocated arrays or external arrays.”只要是p指向常量区,sizeof(p)得到的值都是4,这可能就是MSDN上说的external arrays吧,另外动态分配的内存,如char *p=new char[20],sizeof(p)得到的值也是4,不知道是不是C++标准上这么规定的?
就呆在云上 2008-09-24
  • 打赏
  • 举报
回复
你的代码有问题,肯定通过不了
不管怎么一会事,有一点记住了,指针在c语言里面是4个字节,因为现在的32位的地址设计就是4个字节来存储指针对象的首地址
3个就是12,单个就是4
很容易的
还有如果是为了找工作来发这么一个问题就免了,代码都写不了,你这个问题晓得了也是白搭,希望你学会打鱼而不是等着别人给你一条鱼
加油
YZZ2086 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 solvepro 的回复:]
我只想知道lz的初始化是否正确,因为这样的初始化将使指针只想字符串常量,一旦发生修改将十分危险。

我记得这样是指向字符串常量,所以不涉及空间分配问题。
[/Quote]


是不是我定义了
char *pstr[]=={,,};
之后,指针数组和 其中的每个元素占用的内存字节数就 已经固定了 的 ???

我 的 初始没的问题!


也就是指针变量和所指向元素的 内存占用问题
solvepro 2008-09-24
  • 打赏
  • 举报
回复
我只想知道lz的初始化是否正确,因为这样的初始化将使指针只想字符串常量,一旦发生修改将十分危险。

我记得这样是指向字符串常量,所以不涉及空间分配问题。
大写的池 2008-09-24
  • 打赏
  • 举报
回复
楼上正解
YZZ2086 2008-09-24
  • 打赏
  • 举报
回复
定义这样一个指针数组:
char *pstr[]={"Robert",
"hello!",
"world!"
};

用sizeof pstr 求得为12
用sizeof pstr[0] 求得为4

每个数组元素占用的字节数是 一样的 !
问题是为什么会一样,用sizeof求的什么量的占用的字节数,


无论给该数组赋予多长的字符串 其结果都一样 为什么??

刚才输入的时候没看!不好意思
cattycat 2008-09-24
  • 打赏
  • 举报
回复
char *pstr[]吧,指针数组,三个指针,当然是3*4=12了,每个指针4字节。
OenAuth.Core 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taodm 的回复:]
先把代码编译通过了再来发问。
[/Quote]

呵呵,大M发彪了,

问题是为什么会一样,用sizeof求的什么量的占用的字节数,

sizeof是类型所占的字节数,你用的是char类型,它的长度不会变


无论给该数组赋予多长的字符串 其结果都一样 为什么??

同上

64,651

社区成员

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

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