善于使用指针

指针是c语言的灵魂

7.1 什么是指针

谭浩强的《c语言程序设计》里面明确,指针是个地址;我就觉得这种说法非常打脑阔,把它理解成类型更好懂

有一种类型叫指针,声明指针时,计算机会申请一块内存,这就是指针的地址,这块内存可以存另一块变量的地址;另外,声明指针时,要先声明指针指向值的类型,通过这个类型,确定指向值类型(一个值的类型取决于它的使用方式,所以必须要先声明类型);计算机通过访问指针存的值(地址),间接访问到对应的内存的值

链接C 指针

7.2指针初始化

1、指针变量初始化的方法

1
2
int a;
int *p=&a;

2、赋值语句的方法

1
2
3
int a;
int *p;
p=&a;

7.3指针的表达式

两种运算

* 间接访问符号

& 取地址符号

他们互为逆运算*&aa等价

左值和右值

左值:左边的值,表示一个地址

右值:右边的值,表示一个值

指针表达式

《c和指针》中有原图

7.4 指针的运算

这里理解成地址似乎更好懂

指针加上一个整数是另一个指针

指针+整数 标准定义中,只能用于指向数组的指针,但其实你只要知道指针操作后的是什么,好像也是可以用的

指针-指针 两个指针相减的类型是无符号整数,表示两指针在内存中的距离

7.5 指针做函数参数

提一下,上课就是经典的交换两实参的值,函数传递的是实参的拷贝,函数改变的是传的拷贝的值,不会改变实参的值,如果想改变实参的值,可以把实参的地址当参数传过去,即指针,这样,虽然传过去的也只是一份指针的拷贝,但函数交换值的时候,实际是通过间接访问,找到了实参的地址,进而修改了实参的值