GCC错误:二进制+的操作数无效

Jea*_*ean 2 c binary gcc pointers

为什么GCC会给我这个错误?我在这做错了什么?

 temp.c: In function main:
 temp.c:6: error: invalid operands to binary +
Run Code Online (Sandbox Code Playgroud)

码:

 main()
 {
     char *Address1,*Address2,*NewAddress;
     Address1= (char*)0x12;
     Address2= (char*)0x34;
     NewAddress = Address1+Address2;
 }
Run Code Online (Sandbox Code Playgroud)

Bas*_*tch 5

你为什么要那样做?

C语言禁止添加两个指针.它仅定义(严格限制)添加指针和整数.

基本上,您只能向指针添加一个足够小的整数,以便结果位于某个已分配内存区域的内部或结束边界.


小智 5

C 不允许添加两个指针。我为此找到的最好的解释,没有触及任何标准,是 Rouben Rostamian 的话:

如果你和我住在同一条街上,我们的门牌号的不同是我们房子之间距离的某种表示。

现在,你告诉我,我们门牌号的总和有什么意义?

所以整个操作没有任何意义。这很合乎逻辑,不是吗?但是,您可以这样做:

NewAddress = (char *)(0x12 + 0x34);
Run Code Online (Sandbox Code Playgroud)