社区
C语言
帖子详情
简单问题:sizeof(char型数组)为数组大小,而不是4, 为什么? 100!
磨刀匠
2003-07-01 11:06:01
char A[10];
int len = sizeof(A);
len的结果是10,而不是sizeof(char *)的值4??
在线等待......
...全文
671
10
打赏
收藏
简单问题:sizeof(char型数组)为数组大小,而不是4, 为什么? 100!
char A[10]; int len = sizeof(A); len的结果是10,而不是sizeof(char *)的值4?? 在线等待......
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
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个元素.
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++:
char
数组
、自定义copy
数组
一.’\0’
问题
1.
char
数组
大小
为3,只给两个元素,那么最后一个默认为’\0’。
char
res[3] = { 'a','b' }; for (int i = 0; res[i] != '\0'; i++) { cout << res[i]; } 输出: 2.
char
数组
大小
为3,给三个元素。
char
res[3] = { 'a','b' ,'c'}; for (int i = 0; res[i] != '\0'; i++) { cout << res
C语言|用
sizeof
和 strlen 计算字符
数组
的
大小
字符
数组
的定义方法大致有三种:第一种是已知
数组
大小
并用单引号初始化;第二种是未知
数组
大小
并用单引号初始化;第三种是未知知
数组
大小
并用双引号初始化。因为
sizeof
是直接计算从
数组
首地址到 ‘\0’ 之间的
大小
,而strlen是计算有效字符的长度,因此设置了一个对照字符数值。//对照//对照从结果中会发现,当固定了
数组
大小
使用
sizeof
计算时结果就是该
数组
已知的
大小
。当用单引号时,在结尾未加 ‘\0’ 的情况下,使用strlen()得到的结果并非是该
数组
的正确长度。
sizeof
获取
数组
长度
昨天开始看《算法导论》这本书,第一个算法就是(直接)插入排序,根据书里给出的伪代码写出了C语言代码,也根据自己的理解重新写了一个。虽然实现了算法的基本要求,但有些细节没有处理好,今天就来完善一下。 在昨天实现的代码中,用来测试的
数组
intarray[]={5,2,4,6,1,3};是固定的,如果要更换待排序
数组
话,原来程序中的相关变量就会因为
数组
长度的改变要做相应的改变。我想要的就是给定任
sizeof
()求字符
数组
的注意事项
问题
描述 C程序中,用
sizeof
()计算
char
arr[]
数组
的(实际)长度时,得到的结果不是实际的长度,纠结了半天终于找到原因。 测试代码 #include <stdio.h> #include <string.h> int main() { // 定义一个字符
数组
char
arr1[] = "abcdefg";
char
arr2[10]="abcdefg"; // 分别用
sizeof
()和strlen()求
数组
的长度 print
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章