0x00
众所周知,指针是C语言的核心,没有搞懂指针就相当于没有学过C语言。今天我们就来仔细盘一下指针这个玩意。
本文正确食用方法:
1.没了解过指针的可以学习指针
2.学习过指针但忘的差不多的可以用以回顾
3.等未来忘了后用以温习指针(笔者写本文目的(ง •_•)ง)
0x01
什么是指针
指针是指向另一数据对象的变量(加粗),指针变量储存了它所指数据对象的地址信息。
0x02如何声明指针:
int *p; // 声明一个 int 类型的指针 p
char *p // 声明一个 char 类型的指针p
int *arr[6] // 声明一个指针数组,该数组有6个元素,其中每个元素都是一个指向 int 类型对象的指针
*p //访问p所指向的对象
&a //这个就不用说了,取地址符
卖了半天关子,指针到底有什么作用呢?
--------------------------指针用法-------------------------
0x03
对函数调用的变量进行修改
我们知道,调用函数时,函数调用的参数其实是一种值传递,并没有对该变量产生影响。那么如果我们恰好就是要对该变量进行操作,那么就需要使用指针来实现
假设我们现在要使用函数来实现交换两个变量的值:
void swap(int a,int b){
int temp; temp = a; a = b; b = temp;}
显然,这样是行不通的,因为函数调用时,只会将变量的值传入函数,对该变量本身并不起作用。所以最终两个变量的值并没有交换。
此时,我们就要使用指针来进行值的交换:
void swap(int *a,int *b){
int temp; temp = *a; *a = *b; *b = temp;}
这样,就成功完成了指针的值的变换。在以上代码中,虽然变量的值本身并没有发生改变,但是指针和指针所指变量的指向关系改变了,如下图: