查找字符指针所指向的数据的大小

Finding the size of the data pointed by char pointer

本文关键字:数据 字符 指针 查找      更新时间:2023-10-16

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

char *data = "Hello, World";

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

char buf[1024] = "abc";

然后strlen(buf) == 3,而sizeof(buf) == 1024.

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

但是,sizeof(ptr)您使用它的方式不会为您提供适当的大小。根据您的平台,它可能是 4 或 8,无论字符串长度如何 - 因为sizeof返回保留指针所需的内存,而不是指向的内容。

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

为什么

不做

   char data[] = "Hello World";
   printf("%dn", sizeof(data));

相反

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

否 在 c++ 中,您不能覆盖 sizeof 运算符。因此,创建一个用户 definded 方法并使其计数 char 而不是调用 sizeof 调用您的函数

我认为你应该做这个虚拟的方式来获得它

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

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