查找char指针指向的数据大小

时间:2013-10-06 05:19:50

标签: c++ c

我想获得char指针指向的数据大小。我明白如果我使用sizeof它会返回指针的大小。但是需要使用sizeof()而不是strlen()和char *而不是char数组。

char *data = "Hello, World";

5 个答案:

答案 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++;

我是可变数据中数据的大小