1.一般变量
一般变量,其值存放在地址中,被使用时直接被取值。
int a=3,temp;
temp=a;//直接被取值
printf("a=%d\t temp=%d\n",a,temp);
printf("&a=0x%x\t &temp=0x%x",&a,&temp);//(暂时忽略)
其运行结果为:
可见,系统分别为a和temp这两个变量分配了不同的地址。
2.指针变量
指针变量用于取一般变量的地址,但其本身也有自己的地址。
int a=3,*p;
//&取地址符号
p = &a;
printf("a=%d\t\n",a);
printf("p=0x%x,&a=0x%x\t\n",p,&a);
//①指针变量本身也被分配了地址
//②指针变量加*等价于直接被地址中的取值
printf("&p=0x%x,*p=%d",&p,*p);
运行结果为:
可见,指针变量用于取地址(指针变量p取了一般变量a的地址),但自身也有地址。注意&和*这两个符号的用法。
综上所述,指针变量变化的是地址,一般变量变化的则是值(常量)。