繁体   English   中英

将Int值分配给* Char指针

[英]Assigning Int value to *Char pointer

我正在研究指针算术,而我的教授则使用如下代码:

int x = 0x01000000;
char *y = &x;
*(y+1) = 0x02;

使x变为0x01020000,但即使第2行也无法在我的系统上编译,这给了我这个错误: warning: incompatible pointer types initializing 'char *' with an expression of type 'int *'

如何在没有警告的情况下运行它? 我认为在我自己的计算机上复制简单的课程资料并不难。

您正在尝试将类型变量放入另一个变量。 由于两者都是指针,因此编译器可以执行此操作,但是警告您可能由此导致的未定义行为影响。

如果要忽略它,某些编译器提供选项。 gcc -Wno-incompatible-pointer-types提供了-Wno-incompatible-pointer-types选项。

但是最好的方法是强制强制转换:

int x = 0x01000000;
char *y = (char*)&x;

作为附带说明, 不能保证这样做:

*(y+1) = 0x02;

x变成0x01020000 只有遵守以下两个条件,它才会这样做:

  • 机器是大端的
  • int为32位大小

因此,您会发现,使用指针强制转换需要您确切地知道自己在做什么,否则您可能会遇到不确定的行为

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM