地址变量的相关问题解析

1.地址变量的初始化

 int a=4;

 int *p=&a;   //p=0xff1

在定义这个变量的时候,*表明这个变量是一个地址变量,int表示将来这个地址变量存储的是某个整数的地址。

 *p=8;

 //在使用地址变量的时候加*,表示取指定地址的存储单元。

 printf("a的地址=%p\n",a);

 printf("p的值=%p\n",p);

 printf("p变量本身的地址")

 //数组名就是首元素的地址

// arr+i:实际上是加上sizeof(int)*i个字节

 访问第i个元素的地址:&arrp[i]=====arr+i

 访问第i个元素的值:arr[i]=======*(arr+i)

int *p=arr//int *p=&arr[0]

//只要arr能用的地方,p都能用

/*请你用指针实现两个数的交换*/

int a=1,b=3;

int *p1=&a;

int *p2=&b;

int temp;

temp=*p1;

*p1=*p2;

*p2=temp;

printf("a=%d,b=%d\n",a,b)

总结:数组名就是首元素的地址

           访问第i个元素的地址:&arr[i]====arr+i

           访问第i个元素的值:arr[i]====*(arr+i)

           只要arr能用的地方,p都能用

你可能感兴趣的:(地址变量的相关问题解析)