c语言取地址和间接引用

#include <stdio.h>
int main()
{
int a=10;
int b;
b=a;
//取地址
//地址符+变量名
&a;
printf("%p\n",&a);
//地址的范围0x000000000001-0xffffffffffff 由12个16进制的数组成
//地址由四个字节组成显示的是首字节的地址
//每次打印地址都是变化的,是因为地址用过之后被回收了,下次使用会再次分配。
//内存地址是由系统分配的,内存大地址长度大,内存小地址长度小。
//printf("%p\n",a);把a的以十六进制输出,当然也可以10进制,数值未变。
//printf("%p\n",&a);把地址以十六进制输出,当然也可以10进制,数值未变。
//地址不额外占用内存空间。举例4g内存,地址不在这个4g内存之中。
//***********//
//间接引用
//取出地址中的值,*号表示在单目运算中表示取值运算符,在双目运算符中表示乘
//例如a * b
//注意单目运算时结合方向由右向左的
printf ("%d\n", * &a);
//结果等于
printf ("%d\n",a);
//根据输出结果可以看出 * &a=a,为什么要通过&得到a的地址,之后再通过 * 取a的值打印出来呢,
//是因为我们正常不知道a这个变量,所以无法对其操作,需要根据使用malloc函数根
//据我们变量的类型和数据的大小动态申请空间,我们将得到这块空间的首地址
//然后通过这个地址,间接对这段空间赋值
return 0;

}

猜你喜欢

转载自blog.csdn.net/weixin_41635275/article/details/88858816
今日推荐