C sizeof char指针

use*_*955 1 c pointers sizeof char

为什么这个char变量的大小等于1?

int main(){

char s1[] = "hello";

fprintf(stderr, "(*s1) : %i\n", sizeof(*s1) )    // prints out 1

}
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 14

NOTA:原始问题起初有点改变:为什么这个char指针的大小为1

sizeof(*s1)

是相同的

sizeof(s1[0])这是char对象的大小而不是char指针的大小.

类型对象的大小char始终1为C.

要获取char指针的大小,请使用以下表达式:sizeof (&s1[0])


Alo*_*ave 5

为什么这个char变量的大小等于1?

因为a的大小char保证是1C标准的字节.

*s1 == *(s1+0) == s1[0] == char
Run Code Online (Sandbox Code Playgroud)

如果要获取字符指针的大小,则需要将字符指针传递给sizeof:

sizeof(&s1[0]);
Run Code Online (Sandbox Code Playgroud)


Jac*_*ack 5

因为您正在引用从数组中衰减的指针,s1所以您获得第一个指向元素的值,即a charsizeof(char) == 1.