-2

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

char *data = "Hello, World";
4

5 回答 5

2

strlen()返回字符串的长度,直到遇到 0 字节。换句话说,您可以拥有:

char buf[1024] = "abc";

然后strlen(buf) == 3,同时sizeof(buf) == 1024

sizeof为您提供存储变量所需的准确内存大小。

但是,sizeof(ptr)您使用它的方式不会给您合适的尺寸。无论字符串长度如何,它可能是 4 或 8,具体取决于您的平台 - 因为sizeof返回保留指针所需的内存,而不是指向的内容。

于 2013-10-06T05:26:13.910 回答
0

一个char指向 1的指针char.后面char可能跟有 0 个或多个chars。这完全取决于您的应用程序使用它的目的。它可能指向一个以 null 结尾的字符串,在这种情况下,您可以使用strlen(). 如果不是,您的问题本质上是没有意义的,否则答案就是sizeof char定义为1.

于 2013-10-06T05:29:17.690 回答
0

int main(int argc, char *argv[]) { char *d="hello,kl"; cout << sizeof(d); //这将只返回 4 所以最好的方法是为此创建自己的函数并在需要时调用它。}

否在 C++ 中,您不能覆盖 sizeof 运算符。因此,请创建一个用户定义的方法并使其对字符进行计数,而不是调用 sizeof 调用您的函数

于 2013-10-06T06:21:33.693 回答
0

为什么不做

   char data[] = "Hello World";
   printf("%d\n", sizeof(data));

反而

于 2013-10-06T06:24:14.240 回答
0

我认为你应该用这种愚蠢的方式来获得它

int i = 0;
while (data[i] != '\0')
      i++;

i 是变量数据中数据的大小

于 2013-10-06T10:47:53.200 回答