#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a = 12;
int *d =&a;//指针d指向变量a
int *b =&a;
int **c;//指向指针的指针,两个**号
c = &b;
//*d就是a
*d = 10 - *d;//10-12 = -2;//这样写是可以的
printf("a = %d\n",a);
d = 10 - *d;//而这样写是错误的,由于-2是一个整数,不是一个地址,但是只有是地址才可以赋值给指针,
//&a是变量a的地址,*&a是对a变量这个地址进行间接访问,所以*&a就是a
*&a = 25;//a = 25;
printf("a = %d\n",a);
printf("a的地址:%d\n",&a);
//间接访问需要两个**
**c = 48;//只是一个指针的指针
printf("a3 = %d\n",a);//8
/*
*1703740 = 36;
这样写是错的,1245024是一个整数,不是一个地址
因为C语言对数据类型要求是很严的,
想要间接操作变量,*号后面必须必须是一个地址
*/
/*数与指针之间的转换*/
/*这种方式很少用到,用也是一般用于硬件开发
或者是操作系统底层开发,和硬件打交道的时候
(int*)1703740这就叫做指针常量
*/
*(int*)1703740 = 36;
printf("a = %d\n",a);
system("pause");
return 0;
}