sizeof判断指针长度

如题所述

关于第一个问题
*ss表示的是一个具体的字符了,所以sizeof(*ss)是1
ss是你定义的一个数组,sizeof(ss)就是数组的具体的长度11了
如果你在定义char *p=ss,那么此时sizeof(p)就是4了,所有指针变量都是4

这里你要弄清楚是数组还是指针,ss是数组,p是指针,虽然有时数组可以当指针用,但是两者还是由区别的,例如你可以p++,但是决不可以ss++,因为编译器会抱错的.

还有看到楼上有char *s = "abcd",要注意s此时是一个指针,但它是一个常量,不要试图s指向的内容,例如*s='1',这是错误的.虽然编译时不会出错,但会发生运行错误.但你可以重新给指针赋值让指针指向新的位置,如果新指针内容可以修改的话,直接用*s进行赋值是允许的.

关于第二个问题
你使用的是位段
a占1位,所以取值范围: 0 - 1
b占2位,二进制最大表示为11,是3,取值范围: 0 - 3
c占3位,二进制最大表示为111,是7,取值范围: 0 - 7
d占4位,二进制最大表示为1111,是15 ,取值范围: 0 - 15
温馨提示:答案为网友推荐,仅供参考
相似回答