我想获得char指针指向的数据大小。我明白如果我使用sizeof它会返回指针的大小。但是需要使用sizeof()而不是strlen()和char *而不是char数组。
char *data = "Hello, World";
答案 0 :(得分:2)
strlen()
返回字符串的长度,直到遇到0字节。换句话说,你可以:
char buf[1024] = "abc";
然后strlen(buf) == 3
,而sizeof(buf) == 1024
。
sizeof
为您提供存储变量所需的精确内存大小。
但是,sizeof(ptr)
使用它的方式不会给你合适的尺寸。它可能是4或8,具体取决于您的平台,无论字符串长度如何 - 因为sizeof
返回保留指针所需的内存,而不是指向的内容。
答案 1 :(得分:0)
char
指针指向一个char.
char
可能后跟零个或多个char
s。它完全取决于您的应用程序使用它。 可能指向以null结尾的字符串,在这种情况下,您可以使用strlen()
。如果不是,那么您的问题基本上没有意义,或者答案是sizeof char
,根据定义,1.
答案 2 :(得分:0)
int main(int argc,char * argv [])
{
char *d="hello,kl";
cout << sizeof(d);
//这将只返回4 SO最好的方法是创建你的
自己的功能,并在需要时调用它。
}
在c ++中没有你不能覆盖sizeof运算符。所以创建一个用户定义的方法并让它计算char,而不是callin sizeof调用你的函数
答案 3 :(得分:0)
为什么不
char data[] = "Hello World";
printf("%d\n", sizeof(data));
代替
答案 4 :(得分:0)
我认为你应该采用这种虚拟方法来获得
int i = 0;
while (data[i] != '\0')
i++;
我是可变数据中数据的大小