C程序范例(4)——指针

一、地址和指针的概念。

1、变量的内容和变量的地址。

在程序运行期间,程序代码,变量,数组,等都存放在内存中,内存单元中存储的内容就是变量的值。计算机的内存是连续的存储空间。内存编织是连续的,基本单位是字节。编译后,每一个变量名对应一个变量地址。引用一个变量就是从该变量名对应的地址中取出的数据。而给变量赋值,则是将该数据按该变量的类型存入对应的内存单元中。

2、指针的概念。

地址“指向”目标变量,C语言形象的把地址叫做指针,变量的值针灸师变量的地址,指针类型就是地址类型。而存放指针的另一变量就是指针类型的变量(指针变量)

3、指针变量。

必须先定义后使用,指针变量是存放地址的,该地址所代表的变量可能是不同类型的,所以定义一个指针变量时,必须同时指定它指向的变量的类型,称之为基类型。

(1)定义格式:

类型名 *指针变量名;

(2)定义时的初始化。

可以使用&变量名来对它进行初始化。diuble *p;p=&n;

(3)指针变量的引用。

&:取地址运算符 *:指向运算符(可以互相抵消)

(4)指针变量的引用。

注意:p=&a;是给指针变量p赋值,*p=3;是给p指向的变量赋值。俩者的含义完全不同。指针变量只存放地址,不能用整形或其他非地址类型赋值给变量。

(5)两种访问变量的方式。

直接访问:直接引用变量名。

间接访问:通过指针变量和指向运算符来引用。

(6)用二级指针实现对指针变量的引用传递。

类型名 **二级指针变量名=&指针变量名;**p就是p指向的指针变量所指向的整形变量。

二、指针与数组。

1、定义指向数组元素的指针变量。

int a【8】,b【10】;

int *p=&a【0】;

p=b;

2、指针运算。

(1)指针变量可以进行指向运算和加减运算。

(2)指针变量可以加减一个整数。

(3)两个同类型的指针可以进行比较运算。

(4)C语言设置了一个指针变量,NULL,成为空指针,空指针不指向任何存储地址单元。

3、通过指针访问数组元素。

(1)*(p+i)或*(a+i)都表示数组元素a【i】,而p+i或a+i都表示a【i】的地址&啊【i】。

(2)指针变量也可以带下标,如p【i】与*(p+i)等价。

(3)注意p是变量,a是符号常量,不能给a赋值。

4、字符指针,字符数组和字符串。

(1)用字符指针访问字符数组。

对于字符数组也和其他类型的数组一样,可通过数组名和指针变量。

5、地址越界问题。

(1)用指针变量访问数组元素时,随时要检查指针的变化范围,始终不能越界。

(2)引用指针变量前一定要对它正确赋值。

(3)指针运算中注意各运算符的优先级和结合顺序。

(4)字符串整体输入时,必须要限制数组长度。

原文地址:https://www.cnblogs.com/yjds/p/6523159.html