main()
{
char a[] = "Visual C++";
char *b = "Visual C++";
printf("\n %d %d",sizeof(a),sizeof(b));
printf("\n %d %d",sizeof(*a),sizeof(*b));
}
Run Code Online (Sandbox Code Playgroud)
sizeof(a)给我输出:( 11 即字符串的长度)
为什么会这样?
为什么不输出sizeof(a)= 4因为当我尝试打印a它时给我一个地址值,因此是一个整数?
Viv*_*ran 10
每当你在程序中引用数组的名称时,它通常会衰减到指向数组第一个元素的指针.该规则的一个例外是sizeof运营商.所以当你考虑以下代码时.
int main()
{
char a[] = "Visual C++";
printf("sizeof(a)=%d\n",sizeof(a)); /* Here sizeof(a) indicates sizeof array */
printf("a=%p",a); /* Here the array name, passed as an argument to printf decays into a pointer of type (char *) */
return 0;
}
Run Code Online (Sandbox Code Playgroud)