指针
指针:一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。
对于指针变量的定义包括三个内容:
(1).指针类型说明,即定义变量为一个指针变量
(2).指针变量名
(3).变量值(指针)所指向的变量的数据类型
类型说明符*指针名=&变量名;
例如:
void main(void){
int i=20,j=100;
int *p1=&i,*p2=&j;//将p1指向i储存地址,p2指向j储存地址
printf("*p1=%d,*p2=%d\n",*p1,*p2);//*p1=20,*p2=100
i=30;//修改i的值,i对应的内存地址中的数据被修改
printf("*p1=%d,*p2=%d\n",*p1,*p2);//*p1=30,*p2=100
p2=p1;//将指针p2指向指针p1指向的内存地址
printf("*p1=%d,*p2=%d\n",*p1,*p2);//*p1=30,*p2=30
i=50;//修改i的值,i对应的内存地址中的数据被修改
printf("*p1=%d,*p2=%d\n",*p1,*p2);//*p1=50,*p2=50
}
函数的参数不仅可以是整型,实型,字符型等数据还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。例如:
swap(int *p1,int *p2){
int temp=*p1;
*p1=*p2;
*p2=temp;
}
void main(void){
int a,b;
scanf("%d %d",&a,&b);
swap(&a,&b);
printf("%d %d\n",a,b);
}
指针可以指向基本类型,也可以指向复合类型,因此也可以指向另外一个指针变量,称为指向指针的指针.
void main(){
int i=10;
int *p=&i;
printf("%d\n",*p);//10
int **pp=&p;
printf("%d\n",*pp);//10
}
本片文章由本人原创或转载,侵删。