(1)C语言变量地址问题引入
#include"stdio.h"
int main()
{
int i=12;
printf("i=%d &i=%d *&i=%dn",i,&i,*&i);
return 0;
}
C语言中每个变量都有地址 &为取地址符 *则为指针运算符号
(2)指针赋值问题 指针存的是地址 p即为指针存的地址 &p 为p的地址 *为地址内的值(指针运算符)
#include"stdio.h"
int main()
{
int i=12; //定义变量
int *p;//定义指针
p = &i; // p为指针 故 赋值右边也为指针
printf("i=%d &i=%d *&i=%dn",i,&i,*&i);
printf("*p=%d p=%d &p=%dn",*p,p,&p);
return 0;
}
(3)通过指针改变变量的值
#include"stdio.h"
int main()
{
int i=12; //定义变量
int *p;//定义指针
p = &i; // p为指针 故 赋值右边也为指针
printf("i=%d &i=%d *&i=%dn",i,&i,*&i);
printf("*p=%d p=%d &p=%dn",*p,p,&p);
*p = *p+1;
printf("i=%d &i=%d *&i=%dn",i,&i,*&i);
printf("*p=%d p=%d &p=%dn",*p,p,&p);
return 0;
}
指针实战
#include"stdio.h"
int main()
{
int i=12,j=13,k;
int *p,*q,*r;
p=&i; //i的地址给p
q=&j; //j的地址给Q
printf("i=%d j=%d *p=%d *q=%dn",i,j,*p,*q);
r=p;
p=q;
q=r;
printf("i=%d j=%d *p=%d *q=%dn",i,j,*p,*q);
k=i;
i=j;
j=k;
printf("i=%d j=%d *p=%d *q=%dn",i,j,*p,*q);
k=*p;
*p=*q;
*q=k;
printf("i=%d j=%d *p=%d *q=%dn",i,j,*p,*q);
return 0;
}
函数参数使用
#include"stdio.h"
int swap(int *p1,int *p2);
int swap1(int *p1,int *p2);
int main()
{
int i=12,j=13,k;
int *p,*q,*r;
p=&i; //i的地址给p
q=&j; //j的地址给Q
printf("i=%d j=%d *p=%d *q=%dn",i,j,*p,*q);
printf("p=%d q=%dn",p,q);
swap(p,q);
printf("p=%d q=%dn",p,q);
printf("i=%d j=%d *p=%d *q=%dn",i,j,*p,*q);
swap1(p,q);
printf("i=%d j=%d *p=%d *q=%dn",i,j,*p,*q);
return 0;
}
int swap(int *p1,int *p2)
{
printf("p1=%d p2=%dn",p1,p2);
int *temp;
temp=p1;
p1=p2;
p2=temp;
printf("p1=%d p2=%dn",p1,p2);
return 0;
}
int swap1(int *p1,int *p2)
{
int temp;
printf("*p1=%d *p2=%dn",*p1,*p2);
temp=*p1;
*p1=*p2;
*p2=temp;
return 0;
}



