指针&指向指针的指针学习记录
程序员文章站
2022-03-11 17:42:35
...
1.*号的区分
1) *作指针声明:
int a=1; int *p=&a;
此处*号的作用是声明p为一个int类型的指针.
2)*作取值运算符
*p=2;
此处意为取地址p中的值(相当于a),并将其赋为2.
2.指针的主要作用
1)作函数参数,可以在被调函数中直接修改实参的值。
例子:两数交换的函数swap(a,b);
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(){
int a=2,b=3;
printf ("a= %d,b=%d\n",a,b);
swap(&a,&b);
printf ("a= %d,b=%d\n",a,b);
return 0;
}
int swap(int *x,int *y){
int temp;//不能是 int *temp;temp=x;```因为temp=*x意为把x指向的地址上的值赋给temp。
temp=*x;
*x=*y;
*y=temp;
}
3.指向指针的指针的作用
为提高函数封装性,避免使用全局变量。如使用链表时,在某子函数中需要对头结点指针进行修改,就要用到指向头结点指针Node *Phead的指针Node **PPhead.只传入Phead的话,只修改子函数中的形参,实参却没有变。