指针

来源:互联网 发布:mac 音视频处理软件 编辑:程序博客网 时间:2024/06/07 07:44

指针的使用

众所周知,指针是一种 保存地址 的变量类型 。
那么 为什么 要用到指针呢?
大家 先看一下这片代码有没有问题。

#include<stdio.h>
void swap(int a,int b);
int main()
{
int x=3,y=4;
swap(x,y);
printf("%d %d",x,y);
return 0 ;
}
void swap(int a,int b)//**这里的a,b,作为形参接收上面x,y 的值。**
{
int t;
t=a;
a=b;
b=t;
return ;
}

很明显,a,b交换值之后 ,对x,y并没有影响,函数也就起不到交换变量值的作用;

那么怎么办呢 。
设想一下 ,要是把 存储变量的地址传给函数形参,函数就可以通过变量地址找到变量,再把变量值交换。(官方叫法是 间接更改变量值);

这里 要知道 c语言提取 地址里所存储值的方法是 : *地址值;
如 *(&a),&是取地址符。
我们 需要一个变量来存储 地址值
定义方法是 数据类型名 * 变量名
如 int * p;
赋值 p=& a;
提取 地址里所存储的值 也就是 * p ; *p也就是 a;

这样我们就可以把 swap函数改为
void swap(int *a,int *b)
{
int t;
t=* a;
* a=* b;
*b=t;
return ;
}

主调函数 为 swap(&x,&y);//把地址传给函数
这样也就成功的将 x,y 交换了;

0 0
原创粉丝点击