#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
int x = 2;
int *pointer2 = &x;
int number = &x;
printf("%x\n",number );
printf("%x\n",number+1 );
printf("%x\n",pointer2 );
printf("%x\n",pointer2+1);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我从gcc得到一个警告,"初始化从指针生成整数,没有强制转换[默认情况下启用]",但是当我编译时,得到以下输出:
5da24540
5da24541
5da24540
5da24544
Run Code Online (Sandbox Code Playgroud)
很明显,上面的事情没有发生,因为我们可以在输出的前两行看到地址只增加1而第二种情况下增加4.请解释并返回可以分配给其他变量的地址,如int或它是一个自我指针,只能指定给指针类型.
number是一个int,用地址初始化x(int从地址"没有强制转换" - 警告告诉你,这可能不是你想要的) - 如果你增加它,它将增加1.
pointer2是一个指针int(用相同的地址初始化x),递增它的大小增加int(这种行为称为"指针算术").
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |