在不同实例中,十六进制值通过字符指针使用不同的填充进行打印
Hex values printing with different padding through char pointer in different instances
#include<stdio.h>
int main()
{
unsigned int a=0xabcdef12;
char *c=(char *)&a;
int i;
for(i=0;i<4;i++)
{
printf("%x.....%xn",*c,c);
c++;
}
return 0;
}
操作/点:
12.....bfad5bd4
ffffffef.....bfad5bd5
ffffffcd.....bfad5bd6
ffffffab.....bfad5bd7
如果您在第一次打印时看到,它正在打印 12,但在所有后续打印中,它打印了正确的值,但填充了 fffff。有人可以解释这种差异吗?
你在弄乱指针。在外面要小心。该行
char *bit_longer_name=(char *)&a;
说"gimme指向CHAR类型数据数组的指针,并称之为'bit_longer_name'。数组在变量'a'地址处初始化"。现在当你这样做时
bit_longer_name++
它实际上在内存中向前移动指针 - 转到数组中的下一个元素 - 就像my_char_array[i]所做的那样。您那里的打印:
printf("%x.....%xn",*c,c);
第一部分打印"我指向的当前数组单元格的值",您实际上正在为 printf 传递无效值(您应该从中得到警告!(,这会导致编译器从"c"指向的内存点读取(->它首先工作(。
另一方面,第二部分是"我用'c'指向的地址",正如你所看到的,它向前移动。
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 在c++中用vector填充一个简单的动态数组
- 如何在c++中打印目录
- 如何使用用户输入在C++中正确填充2D数组
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 如何找到大小'x'数组是否完全填充,在C++?
- 无法打印用户填充的部分数组的反面
- 使用队列和列表 STL 进行C++分配。在将数据填充到列表或队列中然后打印该数据时遇到问题
- 用std :: cout打印零填充的十六进制
- 尝试递归填充和打印出两组的所有归纳函数的问题
- 如何用自己的值填充tm结构,然后打印出来
- 在不同实例中,十六进制值通过字符指针使用不同的填充进行打印
- 在打印出字符串后设置填充
- 如何填充和打印向量集的向量
- 为零填充宽度和精度与要打印的整型参数相同
- 打印%g和%f之间的零填充差
- 配对 cpp 或使用地图进行填充和打印
- 我如何打印4个不同字母组合成2个字母对的所有方式来填充4个位置,每个字母正好出现两次