sizeof(str)
答案:5 悬赏:50
解决时间 2021-01-12 05:59
- 提问者网友:相思似海深
- 2021-01-11 15:29
sizeof(str)
最佳答案
- 二级知识专家网友:零点过十分
- 2021-01-11 15:46
按你写的,2个都是6
如果这样:
#include
main()
{
char str[]="hello"
char *p=str;
int a,b;
a=sizeof(str);
b=sizeof(p);
}
那么
a = 6
b = 4
因为p是一指针,32位下的所有指针都是4字节,sizeof(p)为4而不是6俗称数组退化为指针,因为sizeof是个静态操作符,编译时期就可以确定值,而固定的数组的长度在编译期间也是确定了的,所以sizeof(str)能给出6,但p是个指针,在编译期间,sizeof不知道p指向一个数组,还是仅指向一个元素,所以其指向位置的数组大小是确定不了的,所以给出sizeof(p) = 4,和sizeof(int),sizeof(double)是一个道理
如果这样:
#include
main()
{
char str[]="hello"
char *p=str;
int a,b;
a=sizeof(str);
b=sizeof(p);
}
那么
a = 6
b = 4
因为p是一指针,32位下的所有指针都是4字节,sizeof(p)为4而不是6俗称数组退化为指针,因为sizeof是个静态操作符,编译时期就可以确定值,而固定的数组的长度在编译期间也是确定了的,所以sizeof(str)能给出6,但p是个指针,在编译期间,sizeof不知道p指向一个数组,还是仅指向一个元素,所以其指向位置的数组大小是确定不了的,所以给出sizeof(p) = 4,和sizeof(int),sizeof(double)是一个道理
全部回答
- 1楼网友:忘川信使
- 2021-01-11 18:39
sizeof(p)去的是一个指针的地址长度而一个字符指针一般只占4个字节的长度.
p是p指的地址
所以输出是4
*p是才指数组str
如果是b=sizeof(*p);才书出是6,
p是p指的地址
所以输出是4
*p是才指数组str
如果是b=sizeof(*p);才书出是6,
- 2楼网友:独行浪子会拥风
- 2021-01-11 18:09
a = 6;
b = 6;
b = 6;
- 3楼网友:千夜
- 2021-01-11 17:41
a = 6
b = 4
b = 4
- 4楼网友:洒脱疯子
- 2021-01-11 16:37
a=6;
b=6;
b=6;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯