社区
C语言
帖子详情
简单问题:sizeof(char型数组)为数组大小,而不是4, 为什么? 100!
磨刀匠
2003-07-01 11:06:01
char A[10];
int len = sizeof(A);
len的结果是10,而不是sizeof(char *)的值4??
在线等待......
...全文
623
10
打赏
收藏
简单问题:sizeof(char型数组)为数组大小,而不是4, 为什么? 100!
char A[10]; int len = sizeof(A); len的结果是10,而不是sizeof(char *)的值4?? 在线等待......
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
磨刀匠
2003-07-02
打赏
举报
回复
我查了一下MSDN:
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
我明白了, 谢谢各位!
idontlikenickname
2003-07-01
打赏
举报
回复
VC6中sizeof(int) = 4~~
磨刀匠
2003-07-01
打赏
举报
回复
ra3(可乐)的:
int len = sizeof(A);
是求A在内存中占几个字节.
如果是 int A[10];
int len = sizeof(A);
len的结果就是40 (VC6中),TC3中的结果是20
len怎么会是40,是你打错了字吗?
磨刀匠
2003-07-01
打赏
举报
回复
我的问题是 "为什么sizeof(char型数组)为数组大小,而不是4"
磨刀匠
2003-07-01
打赏
举报
回复
我知道是这样的,问题是为什么是这样? 有谁能说说吗? 比如sizeof的内部实现?
我们都知道数组名是数据第一个元素的地址指针,实际上A就是char *型, 我觉得应该和sizeof(char *)结果一样,但却不是? 。。。。
而且下面的函数又不一样,他们在语法上是一样的,但语言的底层实现不一样,我搞不清楚,希望哪位仁兄帮我解答一下。。。。。
void SizeTest(char Dat[100])
{
int i = sizeof(Dat); // i 的结果是 4,和sizeof(char *)一样
}
ra3
2003-07-01
打赏
举报
回复
int len = sizeof(A);
是求A在内存中占几个字节.
如果是 int A[10];
int len = sizeof(A);
len的结果就是40 (VC6中),TC3中的结果是20
cy214
2003-07-01
打赏
举报
回复
添一句 sizeof(&A[0]); 可以得到4 这样是char *的大小
ntxs
2003-07-01
打赏
举报
回复
sizeof(数组名) 测量出来的 是整个的数组长度
这是应该值得注意的地方 因为char的长度是1 所以整个长度当然是 10啦
有关内容见: C++ PRIMER
sizeof(char *)
如果你想测量指针本身的长度 可以这么写:
char *a; int i;
i = sizeof(a);
就可以了。
晨星
2003-07-01
打赏
举报
回复
sizeof的功能就是这样的,对于数组给出数组的字节长度。
idontlikenickname
2003-07-01
打赏
举报
回复
char *是个指针类型,大小就是4字节~
sizeof(数组名)一般不等于sizeof(该数组类型的指针),除非数组有4个元素.
相关推荐
sizeof
(a)/
sizeof
(*a)的含义
sizeof
(a)/
sizeof
(*a) a是数据的
大小
,*a是数据的内存
大小
,也就是数据的存储类
型
。 一般a为
数组
,
sizeof
(a)是整个
数组
的
大小
,如果a是int
型
,
大小
sizeof
(a)/
sizeof
(int) 为数据的个数。
二维字符
数组
与
char
** 关系
数组
和指针联系很紧密,
数组
名的含义至少有两种含义: 1. 对应数据中的第一个元素的地址, 2.
sizeof
为
数组
大小
,而不是指针
大小
注:《c专家编程》中有详细介绍 指针使用经验总结.pdf 中也有相关内容 编程中,需要向某个函数传递一个字符串
数组
。测试代码如下:#include #define M 2#define N
100
如何定义宏,返回
数组
的
大小
,并可以检查传入的参数是否为
数组
问题
描述: 通常我们会定义
数组
,如int a[
100
]; 然后再写别的代码,然后在程序不知道的哪个位置,传入了一个a 我觉得他可能是个
数组
,但不确定,而且我还想知道a这个
数组
的
大小
。 通常我们会这么做
sizeof
(a)/
sizeof
(a[0]) 但是这样做有
问题
,如果a
sizeof
与strlen使用中的
问题
概述 直接上代码,使用中经常会涉及到
sizeof
与strlen计算的
问题
,下面看例子:
char
*pstr = "hello";
char
pstr[] = "hellonini";
char
pstr[6] = "hello"; 上述求
sizeof
(pstr)的值,分别为:4 10 6 。 第一个为求指针所占字节的
大小
,第二个为
数组
pstr所占字节的
大小
,第三个为
数组
pstr所占字节的
大小
。 继上述
sizeof
,strlen求的是字符串的长度,不包含末尾的\0.
char
pstr[] = "h
C++将int
型
整数转换为
char
类
型
数组
将int
型
整数转换为
char
类
型
数组
: 使用snprintf(s,
sizeof
(s), "%d", x),其中s为
数组
名,
sizeof
(s)为
数组
长度,"%d"指定整数类
型
,x为需要进行转换的整数。正确调用可完成整数类
型
转换字符
数组
。 通常不建议使用itoa()方法,因为它是一个非标准的C / C++语言功能,因此常常无法通过编译。 int x;
char
s[
100
]; cin>...
C语言
68,375
社区成员
242,772
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告