C语言的核心,掌握不好C的精髓就没有get到。写指针的文章书籍非常多,我不是班门弄斧,只是记录一下自己的理解,希望对人对己有所启发。
昂山素季说过,这个世界只有两种人一种是学习的,一种是不学习的。我现在要变成学习的人。
1、核心概念---指针就是地址
一个变量的地址就是这个变量的指针,请牢记这个概念
2、指针的应用---函数参数
为什么有指针,看它的应用就是原因,不能用要它干啥。
函数参数的调用是传值调用,它不会改变被调用者的值,这时怎么办---传址调用,你可以这样理解它也是传值调用,传递的是地址的值,地址并没有变。
这里有两个误区,我在这里绕了很久
其一、参数不仅仅是指输入参数,还有输出参数,返回值不是参数。在很长一段时间我把参数理解成输入参数
其二、看看函数原型和函数
void fun(int *p); //函数原型1
void fun(int *); //函数原型2---省略参数名
void fun(int *p)
{
*p=1;
}
函数调用:
int i=0;
fun(&i);
这里我绕了好久的原因在于,函数定义时(我把分配空间的声明称之为定义和普通的声明区分开) 其参数是“int *p”,而调用时变成了"&i"。在以前