Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 字符指针的大小_C_Pointers_Char_Sizeof - Fatal编程技术网

C 字符指针的大小

C 字符指针的大小,c,pointers,char,sizeof,C,Pointers,Char,Sizeof,为什么这个char变量的大小等于1 int main(){ char s1[] = "hello"; fprintf(stderr, "(*s1) : %i\n", sizeof(*s1) ) // prints out 1 } 为什么这个char变量的大小等于1 int main(){ char s1[] = "hello"; fprintf(stderr, "(*s1) : %i\n", sizeof(*s1) ) // prints out 1 } 因为C标准保

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

int main(){

char s1[] = "hello";

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

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

int main(){

char s1[] = "hello";

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

}
因为C标准保证字符的大小为1字节

*s1 == *(s1+0) == s1[0] == char
如果要获取字符指针的大小,需要将字符指针传递给sizeof:

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

int main(){

char s1[] = "hello";

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

}
因为C标准保证字符的大小为1字节

*s1 == *(s1+0) == s1[0] == char
如果要获取字符指针的大小,需要将字符指针传递给sizeof:


注:最初的问题有点变化,它是:为什么这个字符指针的大小是1

大小*s1

SizeOffs1[0],它是char对象的大小,而不是char指针的大小

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


要获得字符指针的大小,请使用以下表达式:sizeof&s1[0]

NOTA:最初的问题有点变化,它是:为什么这个字符指针的大小是1

大小*s1

SizeOffs1[0],它是char对象的大小,而不是char指针的大小

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

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

sizeof*s1表示s1指向的元素的大小。现在s1是一个字符数组,当作为指针处理时,它会衰减为指针,取消对它的引用会产生一个char类型的值

而且,sizeofchar始终是其中之一。C标准要求这样做

如果需要整个数组的大小,请改用sizeofs1。

sizeof*s1表示s1指向的元素的大小。现在s1是一个字符数组,当作为指针处理时,它会衰减为指针,取消对它的引用会产生一个char类型的值

而且,sizeofchar始终是其中之一。C标准要求这样做


如果需要整个数组的大小,请改用sizeofs1。

因为要延迟从数组s1衰减的指针,所以要获得第一个指向元素的值,这是一个char,sizeofchar==1。

因为要延迟从数组s1衰减的指针,所以要获得第一个指向元素的值,它是char,sizeofchar==1。

sizeofchar=1,*是地址运算符处的值*s只是第一个字符。这就是你的情况。所以sizeof*s=1,有趣的是sizeofs1是6。@GrijeshChauhan ASCII有128个代码,而不是256。@KerrekSB你知道扩展ASCII图表吗?它的最大值是256,即0到255…我认为C不知道扩展ASCII图表。运算符sizeof产生一个size\t类型的值。即使忽略在作用域中没有原型的情况下调用变量函数,在没有相应int参数的情况下使用%i也是错误的。使用%zu或强制转换该值。哦并包含正确的标头。sizeofchar=1,*是地址运算符处的值*s只是第一个字符。这就是你的情况。所以sizeof*s=1,有趣的是sizeofs1是6。@GrijeshChauhan ASCII有128个代码,而不是256。@KerrekSB你知道扩展ASCII图表吗?它的最大值是256,即0到255…我认为C不知道扩展ASCII图表。运算符sizeof产生一个size\t类型的值。即使忽略在作用域中没有原型的情况下调用变量函数,在没有相应int参数的情况下使用%i也是错误的。使用%zu或强制转换该值。哦并包含正确的标题。sizeofs1返回包含\0的大小,我认为他不想要它。@Jack是的,它想要。谁在乎呢?应该知道strlen.sizeofs1返回的大小包括\0,我想他不想要它。@Jack是的,它想要。谁在乎呢?人们应该了解斯特伦。