【发布时间】:2023-03-03 16:00:02
【问题描述】:
例如:
char mem[100000];
int reg[8];
mem[36] = 'p'; // add char p to our 36th index of our char array
reg[3] = (int)mem[36]; // store value of mem[36] into reg[3]
现在我想打印该 int 数组索引 3 处的 char 值。
-
到目前为止,我的思考过程引导我编写如下代码:
char *c = (char*)reg[3];
cout
但是当我尝试打印出来时,我仍然得到奇怪的值和字符。
据我了解,一个整数等于 4 个字符。因为一个字符在技术上是一个字节,而一个整数是 4 个字节。
所以我将一个字符作为 4 个字节存储到我的整数数组中,但是当我将其拉出时,有垃圾数据,因为我插入的字符只有一个字节,而索引的大小为 4 个字节。
【问题讨论】:
-
你试过简单地做
cout << reg[3] << endl;吗? -
是的,而不是打印字符“p”,而是打印一个长整数。这是由于我的索引中有垃圾数据,因为从技术上讲,一个字符只有 1 个字节,而一个整数是 4 个字节。
标签: c++ arrays pointers char int