C++ - 无法打印字符指针的目标
C++ - Can't print target of a char pointer
我在C++中有一个方法,它接收char * data
作为参数,如下所示:
bool Whatever::method(char * data) { ... }
现在,我想打印该数组的内容。如果我尝试:
for (int i = 0...) {
cout << *(data+i) << endl;
}
它将只打印空格。没有垃圾,只有空白。但是,如果我强制转换为int *
,然后取消引用,它会起作用(当然,它会将值打印为整数):
for (int i = 0...) {
cout << *(int*)(data+i) << endl;
}
我在这里做错了什么?谢谢
编辑:
数组的内容如下:
enum
char[6]
long
我得到的是每个char
的一个空格。即使我删除for
循环并尝试类似cout << *data << endl;
(应该打印第一个字符)的操作,它仍然会打印空白。
我知道,如果我将long
解释为char
,它将不会被正确打印,而enum
毕竟只是一个数字,但无论如何,我应该能够将它们解释为字符。。。如果我错了,请纠正我。
表达式
*(int*)(data+i)
将由data+i
形成的char*
指针投射到int*
并解引用。这将作为int
访问sizeof(int)
char
-值,除了它是Undefined Behavior,所以它可能真的会做任何事情。特别是在数组的末尾。
如果你对输出数值感兴趣,可以改为
+data[i]
这将CCD_ 19的值提升为CCD_。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- memcpy是否取决于源指针和目标指针的类型
- 当应该删除其目标时,为什么此智能指针给出正确的结果
- C++ - 无法打印字符指针的目标
- std::目标获取指针参数的线程错误
- 更改函数中指针的目标(指向动态创建的对象)
- CLASS_NAME未声明 - 无法dynamic_cast(目标不是指向完整类型的指针或引用)
- C++ 指针目标返回错误值
- 正在从常量指针参数的目标复制对象以供临时使用
- C++:指针,查找其目标的地址
- 我可以修改作为参数传递的指针的目标吗?
- 如何检查LLVM StoreInst的目标是否是函数指针
- 序列化指针本身而不是目标对象
- 目标c-在c++中用指针在类中输入数据
- 与指针-c++(目标C)的混淆
- 目标 C 中的函数指针