欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

指针&指向指针的指针学习记录

程序员文章站 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的话,只修改子函数中的形参,实参却没有变。

指针&amp;amp;amp;指向指针的指针学习记录