半夏凉歌   还在忙吗,别忘了给自己一个微笑。   2022-06-28

二级C 第六章指针

【考点1】指针变量

指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。

【考点2】指针变量的定义

格式为:类型名 *指针变量名。二维指针int **p;可以理解为基类型为(int *)类型。

【考点3】指针变量的初始化

指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。

指针变量两种初始化

方法一:int a=2,*p=&a;(定义的同时初始化)

方法二:int a=2,*p; (定义之后初始化)

p=&a;

【考点4】指针变量的引用

&是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。

【考点5】指针的运算

int *p 中 *p 和p 的差别:

*p 可以当做变量来用;*的作用是取后面地址p 里面的数值

p 是当作地址来使用。

*p++ 和(*p)++的之间的差别:改错题目中很重要

*p++是地址会变化。

(*p)++ 是数值会要变化。

三名主义:(考试的重点)

数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。

考试重要的话语:

指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p 的地方都可以用它等价的代替指向的变量。

例如:int a=2,*p=&a;

*p=*p+2;

(由于*p 指向变量a,所以指向哪个就等价哪个,这里*p 等价于a,可以相当于是a=a+2)