社区
C语言
帖子详情
char str[] ="Hello”; sizeof (str ) = ???
codfish
2001-12-25 08:26:40
char str[] = “Hello”;
sizeof (str ) = ???
...全文
1358
24
打赏
收藏
char str[] ="Hello”; sizeof (str ) = ???
char str[] = “Hello”; sizeof (str ) = ???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jwatschool
2001-12-27
打赏
举报
回复
谭浩强那本c语言书明确的讲过, 没有好好看书呀。这是国家二级常考的题
www_com_me
2001-12-26
打赏
举报
回复
我也凑凑热闹!
int main(int argc, char* argv[])
{
char test1[]="12345";
char test2[5];
printf("size of test1=%d\n",sizeof(test1));
printf("size of test2=%d\n",sizeof(test2));
return 0;
}
shitianhen
2001-12-26
打赏
举报
回复
即使有空格,也是6
不过我用的是vc6
可能跟编译器有关系
其他就不知道了
stl_liu
2001-12-26
打赏
举报
回复
这个问题可以看成:
char str[] = "Hello";
char *p = str;
int i = sizeof (str);
int j = sizeof (p);
那么i==6,而j==4。
因为str是字符数组,p是指针。
ourworld
2001-12-26
打赏
举报
回复
leizhengdeng(E-农民) 说得很对,传递指针一般应该再加一个参数指明指针指向地址的空间大小,API中普遍存在这样的用法,在MFC变成中建议使用数组之类的对象,这样不易出错。
winmain
2001-12-26
打赏
举报
回复
6,别忘了'\0'
kingofark
2001-12-26
打赏
举报
回复
学习。
Linux2001
2001-12-26
打赏
举报
回复
呵呵
leizhengdeng
2001-12-26
打赏
举报
回复
具体到函数调用时,不管数组和指针,进入函数後都是以一个4字节(32 bit system)的数压入栈中作为函数内部使用。函数内使用这个4字节的数是不管其是数组还是指针,而是统一作为一个指针来使用。
如果非要在子函数中判断传进来的是指针还是数组,只能根据特定的编译器中堆栈地址的范围来判断,但这时很危险的,所以到数组名作为参数传递到子函数就是仅仅传递一个4字节的值而已。
leizhengdeng
2001-12-26
打赏
举报
回复
函数 int A(char *a);
{
int ret = sizeof(a);
return ret;
}
char str[] =“Hello”;//6
A(str)=???;//4 sizeof(char *) == 4
原因请看:http://www.csdn.net/Expert/topic/441/441581.shtm
somat
2001-12-26
打赏
举报
回复
答案绝对是6!
不要只是空讨论,大家一定要亲自编写程序去试!!!
那样才会体会深刻!!!
ttzzgg_80713
2001-12-26
打赏
举报
回复
6
bear2000
2001-12-26
打赏
举报
回复
答案应该是6.因为每个字符串的末尾都有一个结束符'\0'.这是字符串的标志!
GuanXP
2001-12-26
打赏
举报
回复
sizeof就是对象的内存尺寸.
char str[] = "hello";
在内存中是
str[0] ='h'
str[1] ='e'
str[2] ='l'
str[3] ='l'
str[4] ='0'
str[5] ='\0'
c中的字符串都是用'\0'即0结尾的.
foxmike
2001-12-26
打赏
举报
回复
6
str是字符指针,字符串长度为5,末尾要加一个'\0',故总长度为6
codfish
2001-12-25
打赏
举报
回复
运算符sizeof原本意思???
hz129
2001-12-25
打赏
举报
回复
char str[] = "hello";
sizeof(str) //6
char *p = str;
sizeof(p) //4
sizeof(*p) //1
看来数组和指针真的有很大不同呢,以前学的时候说两者可认为相同实在是差太多了!
codfish
2001-12-25
打赏
举报
回复
函数 int A(char *a);
{
int ret = sizeof(a);
return ret;
}
char str[] =“Hello”;
A(str)=???;
Leehunter
2001-12-25
打赏
举报
回复
别忘了最后还有一个'\0',所以就是6啦.
codfish
2001-12-25
打赏
举报
回复
试题答案是:
char str[] =“Hello”;
sizeof(str) = 6;
可我不知原因?
加载更多回复(4)
新嵌入式Linux笔试题
一、计算题 1 、以下为WinNT下的32位C++程序,请计算
sizeof
的值
char
str
[] = “
Hello
” ;
char
*p =
str
;int n = 10; 请计算:
sizeof
(
str
) = 6
sizeof
( p ) = 4
sizeof
( n ) = 4 void Func (
char
str
[100]) void *p = malloc( 100 ); {
sizeof
( p ) = 4
sizeof
(
str
) = 4 }
char
*s = “
hello
” 和
char
s[] = “
hello
” 的区别
char
*
str
= “
hello
”表示在动态变量区开辟一个存放指针的存储单元,指针变量名为
str
,这个
str
指向常量区的”
hello
”,因此不能更改这个字符串的值,比如
str
[0]='e’这样不行。
char
str
[] = "
hello
"表示在动态变量区开辟一个能连续存放6字节的字符串数组,
str
是数组名称,其数组内容可以被修改,定义在函数中因为是局部变量不能return。 ...
char
str
[]="
hello
";
sizeof
(
str
)是多少?
运行结果如下: (1) 64为ubuntu编译运行
str
[] 14: 14 sta[20] 20: 20 *p 8: 8 abc 1: 1 ia 4: 4 ic 40: 40 (2) 32位arm编译运行
str
[] 14: 14 sta[20] 20: 20 *p 8: 4 abc 1: 1 ia 4: 4 ic 40: 40
C++学习笔记(4)——
sizeof
1、使用
sizeof
计算不同变量所占空间 假设在32为操作系统环境下,代码如下:
char
str
[] = "
Hello
";
char
*p =
str
; int n = 10;
sizeof
(
str
) = ___;
sizeof
(p) = ___;
sizeof
(n) = ___; void Func(
char
str
[100]) {
sizeof
(
str
) = ___; } void *p = malloc(100);
sizeof
(p) = ___; 答案: 6 4 4 4 4 解释
【朝花夕拾】【华为面试题】某32位系统下, C++程序,请计算
sizeof
的值
char
str
[] = “http://www.ibegroup.com/”
char
*p =
str
; int n = 10; 请计算
sizeof
(
str
) = ?(1)
sizeof
( p ) = ?(2)
sizeof
( n ) = ?(3) void Foo (
char
str
[100]){ 请计算
sizeof
(
str
) = ?(4) } void *p = malloc( 100 ); 请计算
sizeof
( p ) = ?(5) 答案:(1)17 (2)4 (3) 4
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章