C语言中指针和地址的区别
指针变量p的值为0x200;*p是指向地址为0x200的指针,也就是取存放在地址为0x200中的值,即为100;所以*p=a=100。
如上图所示,指针变量p的值为0x200;*p则为地址0x200所存放的值0x300;**p则是为地址0x300所存放的数值a;所以**p=100.
代码分析:
#include <stdio.h>
int main(int argc,char ** argv)
{
int a=100;
int *p;
p=a;
//*p=a;
//P=&a;
//*p=&a;
printf(“%d\n”,p);
printf(“%d\n”,*p);
return 0;
}
当p=a;
P等于整型变量a的值100;
*p等于存放在地址编号为100中的数值。
当*p=a;
P为内存新分配的存储地址的IP值,存在着随机性
*p等于100。
当p=&a;
P等于存放整型变量a的地址;
*p等于整型变量a
当*p=&a;//把存放整型变量a的地址赋值给*p,同时会重新分配存储空间和对应的存储空间IP地址
P等于内存新分配的存储IP地址值,存在着随机性
*p等于存放在新分配的IP地址中的数值,数值等于整型变量a。