我想获取 char 指针指向的数据的大小。我知道如果我使用 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
指向 1的指针char.
后面char
可能跟有 0 个或多个char
s。这完全取决于您的应用程序使用它的目的。它可能指向一个以 null 结尾的字符串,在这种情况下,您可以使用strlen()
. 如果不是,您的问题本质上是没有意义的,否则答案就是sizeof char
定义为1.
int main(int argc, char *argv[]) {
char *d="hello,kl";
cout << sizeof(d);
//这将只返回 4 所以最好的方法是为此创建自己的函数并在需要时调用它。}
否在 C++ 中,您不能覆盖 sizeof 运算符。因此,请创建一个用户定义的方法并使其对字符进行计数,而不是调用 sizeof 调用您的函数
为什么不做
char data[] = "Hello World";
printf("%d\n", sizeof(data));
反而
我认为你应该用这种愚蠢的方式来获得它
int i = 0;
while (data[i] != '\0')
i++;
i 是变量数据中数据的大小