社区
C++ 语言
帖子详情
关于指针数组在内存中占用的字节数问题!
YZZ2086
2008-09-24 12:56:26
定义这样一个指针数组:
char &pstr[]={"Robert",
"hello!",
"world!"
};
用sizeof pstr 求得为12
用size pstr[0] 求得为4
每个数组元素占用的字节数是 一样的 !
问题是为什么会一样,用sizeof求的什么量的占用的字节数,
无论给该数组赋予多长的字符串 其结果都一样 为什么??
...全文
560
11
打赏
收藏
关于指针数组在内存中占用的字节数问题!
定义这样一个指针数组: char &pstr[]={"Robert", "hello!", "world!" }; 用sizeof pstr 求得为12 用size pstr[0] 求得为4 每个数组元素占用的字节数是 一样的 ! 问题是为什么会一样,用sizeof求的什么量的占用的字节数, 无论给该数组赋予多长的字符串 其结果都一样 为什么??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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类型,它的长度不会变
无论给该数组赋予多长的字符串 其结果都一样 为什么??
同上
让你不再害怕指针
深入理解指针,很详细,如有错误请高手指点 PDF文件格式下载:http://download.csdn.net/source/454542
指针数组
和数组指针的
内存
布局
初学者总是分不出
指针数组
与数组指针的区别。其实很好理解:
指针数组
:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。它是“储存指针的数组”的简称。 数组指针:首先它是一个指针,它指向一个数组。在32 位系统下任何类型的指针永远是占4 个字节,至于它指向的数组占多少字节,不知道,具体要看数组大小。它...
怎么判断数组在
内存
中
所占
字节数
_C语言难点之数组与指针
提到数组和指针,是C语言的精髓。下面就来讲一讲它们之间的爱恨情仇。数组与指针的定义对于数组来说,它的定义是在
内存
中
拿出一块连续的
内存
作为整个数组的空间,数组名对应与整个数组的首地址,相当于是一个常量的指针。 对于指针来说,它的定义只是在
内存
中
开辟出四个字节(32位系统)。 首先在定义上两个就不一样,只是在功能上可以进行互换。char 在上面的情况下,两个是完全一样的可以进行互换。但是如果是下面这种...
C语言
指针数组
的
内存
大小
实际上定义一个数组相当于开辟一个
内存
空间,arry[100]说明数组的大小有100个元素,100个int类型的元素则实际
内存
大小为4*100=400。本实例
中
的数组指针的
内存
大小也是4*100与普通数组
内存
大小一样。最初所想,所有的指针都是占四个字节,int类型也占四个字节。所以理所当然的想int *arry[100]也是一个指针所以只占四个字节。被我自己蠢笑了emmmmm。
深度理解数组在
内存
中
的存储以及
指针数组
和数组指针的概念
指针和数组我们之前也谈到了,我们说指针就是地址,对指针解引用就是找到这个地址所指向空间存储的数据。数组就是将相同数据类型的数据存储在一块连续的
内存
空间
中
的数据类型,指针和数组都是自定义数据类型。但这只是最基本的定义,如果想要理解的更深刻,我们必须深挖其
中
的底层原理。所以今天我们就来深挖一下,他们之间的区别和联系。 数组在
内存
中
的存储方式是从低地址往高地址使用,定义一个数组会一次开辟一大块空间,然...
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章