juliusun.com
第 23/50 节 冥河C语言教程
除了通过变量名访问变量,指针也可以。以下以32位计算机为例。我们定义的变量、函数等都存储在计算机内存中,内存中每个字节都有唯一的一个编号,我们称编号为地址。
不同的变量名就存放在不同的地址中。指针类型就是用来记录在内存中的地址。因为只要我们找到了变量的地址,并用指针变量来记录它,那么我们就可以通过指针来改变内存,而达到改变变量的目的。
指针类型存储的内容是内存地址,如果把指针类型叫做地址类型,大概也可以。不过指针类型可以好听一点,且如果是地址类型,可能不容易突出类型之分,所以叫指针类型。
与指针操作相关的常用运算符,只有两个,一个是星号*,一个是取地址符&。星号*用来定义和引用指针,取地址符&用来获取变量地址。下面详细讲解。
指针类型和普通变量一样,通常是定义、赋值、引用。指针有类型之分,不同类型指针,指向的类型不如,如int类型指针指向的内容是int类型变量、char型指针指向的是char类型变量。指针定义语法如下:
类型名 * 指针变量名
相比普通基本类型变量,指针变量定义时需要在指针变量名前加个星号*代表指针类型。例:
指针类型赋值,需要的赋值变量的地址。获取变量的地址,用取地址运算符&加在变量前。如获取变量i的地址,用&i来表示。赋值通常格式如下:
指针变量名 = &变量名
注意:变量名要与指针指向的类型相同,否则要强制转换。例:
同普通变量赋值一样,指针可以在定义同时赋值,上述代码可以写成:
访问指针指向的内容用星号加指针变量名:
*指针变量名
如要将指针内容重新赋值,可以写*p = 1;,要将指针指向内容赋值给其它变量,可以写类似i = *p;,例
注意:关于指针的星号运算符在定义和引用时使用。定义时用星号表示变量是指针,引用时用星号表示取指针指向的内容。取地址符&只用在取变量地址上。
指针指向变量后,可以通过指针操作变量了。修改指针指向的内容,对样对指向的变量也会生效。
通过指针可以操作变量,通过变量名也可以。但是不要认为指针是可有可无的,在以后的学习中会发现,指针的作用不是变量名能替代的。
下一节再深入一点了解指针。