1.什么是指针
指针本质其实就是一个地址,我们所说的指针指的是指针变量。指针变量就是一个存放地址的变量。
2.指针定义
与其他变量一样,C系统会为指针变量在内存分配储存单元,在我们定义一个变量的时候,要确定它的类型。int ,char,float 在定义指针变量时也是一样的,必须确定指针类型。int 变量的指针需要用 int 类型的指针存储,float 变量的指针需要用 float 类型的指针存储。
3.初始化和引用
定义时可以设置初值
例: int i=5,*p=&i; (要注意定义时候前面加上*,并且后面有地址运算符&获取i变量)
意思就是在p中存放变量i的地址,此时p和i本质上一直,只是名字不同。
例:printf("%d",i); 等同于printf("%d",*p);
了解以上指针知识后,我们便能解决 利用函数交换数值的问题了
void exchange(int* x, int* y)
{
int z = 0;
z = *y;
*y = *x;
*x = z;
}
int main()
{
int x = 0;
int y = 0;//int x,y;
scanf("%d %d", &x, &y);
exchange(&x, &y);
printf(" %d %d\n", x, y);
system("pause");
return 0;
}
此时,放入“exchange”的函数中的x,y 便能与主函数中的x,y有挂钩。即使没有返回值,但完成了交换的任务。
指针就像一把锁链,把实参和形参挂钩(因为指针变量可以作为实参也可以是形参)。
4.指针变量的运算
指针的计算取决于它的基类型
假设p为指针变量,k为任意证书去,C规定,p+k的值依然表示地址,且有:
p的值+k*基类型变量所占存储单元的大小
如:1. short *p=400,则p+2的值=400+2*2=404
2. float *p=400,则p+2的值=400+2*4=408
指针的用法并不止如此,还可以通过指针引用数组,字符串等,并且还有更多用法等着我们深入探究.