查找字符指针所指向的数据的大小
Finding the size of the data pointed by char pointer
我想获取由字符指针指向的数据的大小。我知道如果我使用 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 是变量数据中的数据大小
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何获取C++字符数据类型的地址
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 在 std::vector<无符号字符中存储任意数据的方法>
- 在C++事务之间存储大量字符数据的有效方法
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 将空格作为单字符数据类型的输入?
- C++ - 使用结构数据类型将单词中的单个小写字符更改为大写,反之亦然
- 在结构数据类型中更改每个字符的 ASCII 值
- 为什么我不能从结构将数据输入到字符数组中?
- 使用二进制数据和无符号字符
- 如何将从第 2 个字符开始的字符串作为函数中的参数传递以进行递归,并约束数据 tiee 是函数中的字符串?
- 将文本文件数据读入字符数组时提取运算符的歧义
- C++将 txt 数据和字符读取到 2D 数组中
- 在结构之间复制字符数据
- 解压缩 TIFF 数据会打印随机字符
- 字符串中单个字符作为数组的数据类型是什么
- 如何在忽略 null 的同时将数据从 char [] 复制到常量字符 *
- 为什么 g++ 在将节点指向数据字符时返回'Segmentation fault'错误?