指针变量
#include <stdio.h>
int fun1()
{
int a;
int b=2,c=3,d=4;
int *p;//定义p为指针变量,说明p里面存的是地址
p=&d;//把d的地址传给p
a=*p;//把d的地址里的值传给a
printf("d的地址值为%d\n",p);
printf("d的地址对应的值为%d\n",a);
return 0;
}
#include <stdio.h>
int fun2()
{
int a=1;
int b=20,c=30,d=40;
int *p=&d;//把d的地址传给地址变量p
printf("d的地址值为%d\n",p);
printf("d的地址对应的值为%d\n",*p);
return 0;
}
设a住在一个门牌号为A的房间。
已知a怎么找A?A=&a。(通过人找房子)
已知A怎么找a?a=*A。(通过房子找人)
指针变量所占字节数
地址的门牌号都相同,比如一幢楼的门牌号都是4位。
但是房间里面的空间大小不一样,存的内容值不一样。
指针变量作为函数参数(难点)
①地址变量得地址,得谁地址指向谁。(指针变量画指向,内容变量画房子)
②有 * 为内容值,不是读就是写。(放在赋值号左边为写,其他都是读)
③回到被调用处形参释放。
#include <stdio.h>
void swap(int *p1,int *p2)
{
/*
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
*/
int *temp;
temp=p1;
p1=p2;
p2=temp;
printf("%d %d\n",*p1,*p2);
}
main()
{
int a,b;
int *p1=&a,*p2=&b;
scanf("%d %d",p1,p2);
swap(p1,p2);
printf("%d %d\n",*p1,*p2);
}