C语言关于指针

1.在对程序进行编译时,系统会根据程序中所定义的变量来分配内存单元,即根据变量类型来分配一定长度的空间。内存区的每一个字节有一个编号,即地址。通过地址我们能够找到所需的变量单元,因此可以说地址指向该变量单元。因此将地址抽象为指针。C语言中的地址,包括位置信息(内存编号/纯地址)和类型信息。只有具有类型信息系统才能根据存储长度调出数据。

2.直接访问与间接访问:直接访问在寻址时就将该址中的值取出;间接访问通过将变量i的地址储存在另一变量中,再通过该变量来找到变量i的地址,从而访问i变量。

3.由于通过地址能找到所需的变量单元,因此说指针指向该变量单元,将地址形象化为指针。

4.如果有一个变量专门用来存放另一变量的地址(即指针),则称它为指针变量,指针变量的值是地址(即指针)。

5.定义时的*pointer_1,前面的*代表该变量是指针变量,后面使用时的*代表指针变量pointer_1所指向的变量。具有

6.指针变量的定义:类型名(基类型)*指针变量名。

7.指针变量前的*表示该变量为指针型变量。指针变量名是pointer_1,而不是*pointer_1,这与定义整型变量与实型变量不同。*号只在定义和输出时使用。
8.始终要记住指针并不单单是一个地址,它包含两个方面:以 存储单元编号的纯地址地址与它指向的数据单元的数据类型。
9.指针变量中只能存放指针,不要将一个整数赋给一个指针变量。在程序中是不能用一个数值代表地址的,地址只能用地址符&得到并赋给一个指针变量。

10.引用指针变量时的较特殊情况:引用指针变量的值。eg:printf(“%o”,p);表示以八进制方式输出指针变量p的值。如果p指向了a,则表示输出a的地址,即&a(&取地址运算符,&a表示a的地址。
11.对指针进行操作时,并不会改变指针变量所指向的地址的值,改变的是指针变量指向的地址.
12.引用数组元素可以用下标法,也可以用指针法。后者使目标程序质量高,即内存占用少,运行速度快。在C语言中,数组名(不包括形参数组名)代表数组中首元素的地址。因此,如对数组a,p=ad的作用是把数组a首元素的地址而非各元素的值赋给p。
13.定义指针变量的同时可以对其进行初始化:int*p=&a[0]
14.[ ]实际上是变址运算符,即将a[i]按a+i计算地址,然后找出此地址单元中的值。
15.如果指针变量p1和p2都指向同一数组中的元素,如执行p2-p1,结果是p2-p1的值除以数组元素的长度,得到两个地址间的元素个数,从而计算其相对位置。

猜你喜欢

转载自www.cnblogs.com/qywcysry/p/9825259.html