1、指针(pointer)C/C+ 的精髓!你不得不学好它! 指针(pointer) 指针是一种数据类型,用于存放某个变量的地址值。此时该指针被称为是指向该变量。 一个指针的类型决定于它所指向的变量的类型。 指针既可指向基本数据类型(即预定义数据类型),又可指向数组、函数、类和文件等用 户自定义数据类型。 指针可以初始化为 0 、NULL (即 0,这是标准库头文件中定义的符号化常量)或一个地址。 内容为 0 或 NULL 的指针不指向任何变量,称为空指针。 例如: int a; int *ptr; 指针 ptr 在下式中被初始化为指向变量 a 。 ptr = 两条语句也可组合地表示为: a =
2、*ptr; 其中 ptr = 指针与数组 数组名是一个指向该数组的常量指针(其值不能改变),也是该数组中首单元的地址值。 一维数组的指针如下: int arr5 = 1, 3, 5, 7, 9 ; int *ptra; ptra = arr;ptra arr0=1 arr1=3 arr2=5 arr3=7 arr4=9 数组指针与数组名两者的异同: (1)整型变量指针 ptr 与整型数组指针 ptra 的说明格式相同,其间空格可放可不放。 (2)arr 既是数组名,又是数组地址,还是数组指针(称为常量指针),三位一体。因此 arr 可在一定范围内与 ptra 等效地使用。 可在一定范围内与 *
3、 等效地使用。但 arr 不 准重新赋值。例如: arr0即*arr 即*ptra 即 ptra0 = 1 arr3即*(arr+3)即*(ptra+3)即 ptra3 = 7 但 arr 的使用不如 ptra 灵活,如: 不允许*arr+,而允许*ptra+。 见以下例子:2.2 中 例 1的主程序 void main() int arr5 = 1, 3, 5, 7, 9;for ( int i = 0; i #include void main() char *nm = “Nice“;char name = “OK“;cout char *name = “ “, “Monday“,“Tue
4、sday“,“Wednesday“, “Thursday“, “Friday“, “Saturday“, “Sunday“;/ 第一单元空着,因数组从零开始, / 而生活中又没有星期零 void main() int week;while (1)coutweek;if ( week7 ) break;cout“This is “nameweekendl;cout“Program ended!“endl; /* Results: Input sequential number(1-7):2 This is Tuesday Input sequential number(1-7):4 This is Thursday Input sequential number(1-7):0 Program ended! */