Ç的sizeof字符指针(C sizeof char pointer)

2019-07-18 03:37发布

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

int main(){

char s1[] = "hello";

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

}

Answer 1:

NOTA:原来的问题已经在第一改变了一点点是: 为什么这个字符指针1的大小

sizeof(*s1)

是相同的

sizeof(s1[0])其是一个的大小char对象,而不是一个大小char指针。

类型的对象的大小char总是1中C.

要获得的大小char指针使用此表达式: sizeof (&s1[0])



Answer 2:

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

因为一个的大小char被保证是1由C标准字节。

*s1 == *(s1+0) == s1[0] == char

如果你想获得一个字符指针的大小,你需要一个字符指针传递给sizeof

sizeof(&s1[0]);


Answer 3:

因为您正在deferencing从阵列衰减指针s1所以你获得第一尖元件,这是一个的值charsizeof(char) == 1



Answer 4:

sizeof(*s1)是指“在元件的尺寸由指向s1 ”。 现在s1是阵列char S,并且当作为指针处理(它“衰变成”指针),解除引用它导致类型的值char

而且, sizeof(char) 始终一个。 C标准要求它是如此。

如果你想整个数组的大小,使用sizeof(s1)来代替。



Answer 5:

sizeof(*s1) means its denotes the size of data types which used. In C there are 1 byte used by character data type that means sizeof(*s1) it directly noticing to the character which consumed only 1 byte.

If there are any other data type used then the **sizeof(*data type)** will be changed according to type.


文章来源: C sizeof char pointer