关于C语言sizeof检测字符串长度的问题

char buf[100];
sizeof(buf) ;//结果等于100
/************************/
char *PP = buf;
sizeof(PP);//结果等于4
/*************************/
struct B
{
char buf[100];
}Buf;
struct B *BB = &Buf;
sizeof(BB->buf);//结果等于100,而不是4
为什么会这样????

第1个回答  2013-07-23
指针是一个很重要的概念,它记录了另一个对象的地址2763既然是来存放地址的9517那么它当然等于计算机内部地址总线的宽度395所以在32位计算机中,一个指针变量的返回值必定是4        BB是指针变量zdhl但BB->buf不是x
第2个回答  2013-07-23
sizeof(BB->buf)中buf是一个数组名,sizeof数组名会得到整个数组所占的字节数。数组首地址可以当成常指针,但是和指针还是有区别的
第3个回答  2013-07-23
sizeof 求的是变量的占用空间, 求字符串长度用 strlen / wcslen
第4个回答  2013-07-23
sizeof(PP)测的是char指针的长度
其他两个测的都是数组长度

c语言怎么看字符串占多少字节
在C语言中,可以使用sizeof()函数来确定字符串所占的字节数。在C语言中,字符串被表示为字符数组,每个字符占用一个字节。字符串的结尾以空字符'\\0'标识,该字符也占用一个字节。因此,一个包含n个字符的字符串将占用n+1个字节的内存空间。sizeof()函数是C语言中的一个内置函数,用于计算变量、类...

c语言中怎么判断字符串在内存中占的字节
在C语言中,使用`sizeof`关键字能获取数据类型在内存中占用的字节数。针对字符串,若通过字符数组表示,`sizeof`可获取其大小。示例代码如下:c#include <stdio.h>int main() {char str[] = "Hello, World!"; \/\/ 字符串通过字符数组表示int size = sizeof(str); \/\/ 获取字符数组的大小printf...

在C语言求字符长度的问题,strlen与sizeof怎么计算出来的长度不是我们...
sizeof(p)计算的是p变量的大小 由于p是指针,p的大小就是4字节,它不是求内容的长度,而是变量p本身的大小 同理q指针也一样 你可以试一下将指针指向的内容长度再增长,sizeof(p)仍然是4 字符指针:分配长度用strlen计算后+1 如果算数组分配长度(数组声明时的空间大小,不管字符数组是否填满)用size...

c语言问题如图:sizeof计算的结果是7吗?因为最后有\\0,这样计算的结果不就...
sizeof求的是变量所占内存的字节数。题中结果是7,表示数组的大小,6个可显示字符加结束符\\0。如果要求字符串长度可以使用strlen(charArr)库函数。

c语言中sizeof问题
这是因为编译器和操作系统会影响变量存储的具体实现。此外,使用sizeof时要注意数据类型与计算结果之间的关系,以确保程序的正确性和效率。解释:sizeof运算符的基本概念 在C语言中,sizeof是一个内置运算符,它的主要功能是返回一个类型或对象所占用的内存大小,单位是字节。这意味着我们可以使用这个运算...

C语言中sizeof问题
1. **数据模型影响**:不同的C编译器可能采用LP32、ILP32、LP64、ILP64或LLP64等数据模型,其中char类型的存储空间通常为1字节,但并非所有平台都如此。例如,`sizeof(char)`的结果取决于编译器的具体实现,可能会是8位。对于`acLineBuff`这个字符数组,如果它是一个全局变量,结果通常是1025字节(...

sizeof("Hello")的结果为什么对于6?
您好,很高兴回答您的问题。在c语言中,双引号括起来的部分为字符串,而字符串必须是以\\0作为结束的标志的,虽然没有写,但是只要是双引号就知道是字符串,字符串最后就有\\0,所以用sizeof测量字符串的长度时一定要加上1。

sizeof运算符是否算\\0?
1、'\\0'字符的重要性 '\\0'字符是C语言字符串的结束标志。它是一个特殊的字符,用于告诉C语言编译器字符串在哪里结束。没有'\\0'字符的字符串可能会导致程序错误或未定义的行为。2、sizeof与strlen的比较 sizeof可以计算字符串的大小,但strlen函数通常用于计算字符串的长度(不包括'\\0'字符)。这...

C语言中,sizeof能求字符串长度吗?
所以sizeof(str[])相当于sizeof(char)=1 另一个sizeof(str)相当于sizeof(char *),对于这种指针类型,在32位计算机中,一个指针变量的返回值通常是4(注意结果是以字节为单位),在64位系统中指针变量的sizeof通常为8,所以当你的系统是64位时,sizeof(str)=sizeof(char *)=8 如:...

C语言的字符数组中sizeof()操作符的计算问题,请帮忙进来看看!
sizeof不关心'\\0',它只跟变量定义有关,即使s里存储的都是'\\0',sizeof(s)还是5 "abcde"是个常量字符串,c的定义里自动给常量字符串加了结束符'\\0'.所以它相当于{ 'a', 'b', 'c', 'd', 'e', '\\0' } char c[] = "abcde"; 是根据常量字符串自动推导c的大小,这里sizeof("...

相似回答