1. 指针与地址
指针:一种保存变量地址的变量
&:取址符,只能应用于内存中的对象,即变量和数组元素
*:间接寻址和间接引用运算符,看下面的代码:
intx=1, y=2, z [10];
int*ip; //ip是int类型的指针
ip=&x; // 指针ip现在指向x,ip保存x的地址
y=*ip; //y的值现在为1
*ip=0; //x现在的值是0
ip=&z[0];//指针ip现在指向z[0]
double*db,atof(char *); //atof的参数是一个指向char类型的指针
2. 指针与函数参数
由于C语言中是以值传递的方式将参数传给调用函数,因此被调用函数不能直接修改外部变量的值
例如:排序算法会使用到swap函数来交换两个次序颠倒的元素
voidswap(int x,int y)
{
Inttemp;
temp=x;
x=y;
y=temp;
}
调用该函数swap(a,b);不会影响到a、b的值,该函数仅仅交换了a和b的副本的值。
将swap函数修改为:
voidswap(int *px,int *py)
{
int temp;
temp=*px;
*px=*py;
*py=temp;
}
把需要交换的变量指针传递给swap函数:swap(&a,&b)