6.3.1指向数组元素的指针 厂指向数组的元素指针变量的定义,与指向普通变量的指针变量的定义方法一样 例如, int array10];(定义aray为包含10个整型变量的数组) 悟言程序设 int* pointer(定义 pointer为指向整型变量的指针变量) 应当注意,如果数组为int型,则指针变量亦应指向int型。下面是对该指针赋值: pointer= &array 把 arrays]元素的地址赋给指针变量 pointer。也就是说, pointer指向aral数组的第0 号元素。 C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此,下面两个语 计|句等价 pointer= &arraylo] pointer-=array 60 注意:数组名不代表整个数组,上述“ pointer=aray;”的作用是“把aray数组的第一 个元素的地址赋给指针变量 pointer而不是“把 array数组各元素的值赋给 pointer” 环 境 返回本节目录
6.3.1 指向数组元素的指针 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本节目录 指向数组的元素指针变量的定义,与指向普通变量的指针变量的定义方法一样 例如,int array[10]; ( 定义array为包含10个整型变量的数组) int *pointer (定义pointer为指向整型变量的指针变量) 应当注意,如果数组为int 型,则指针变量亦应指向int 型。下面是对该指针赋值: pointer= &array[0]; 把array[0] 元素的地址赋给指针变量pointer。也就是说,pointer 指向 array数组的第0 号元素。 C 语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此,下面两个语 句等价 pointer= &array[0]; pointer=array; 注意:数组名不代表整个数组,上述“pointer=array;”的作用是“把array数组的第一 个元素的地址赋给指针变量pointer”而不是“把array数组各元素的值赋给pointer
6.32通过指针引用教组完 1通过指针引用一维数组中的元素 据言程设计 如果有“ int array[l0* pointer=aray;”,则: (1) pointer+i和aray+都是数组元素aray[的地址 (2)*( pointer+i)和*aray+i)就是数组元素aray{i]。 (3)指向数组的指针变量,也可将其看作是数组名, 因而可按下标法来使用。例如, pointer等价于 * (pointer+i) 注意: pointer-+1指向数组的下一个元素,而不是简单 地使指针变量 pointer的值+1。其实际变化为 pointer+1*size(size为一个元素占用的字节数)。 60 例如,假设指针变量 pointer的当前值为3000,则 pointer+1为3000+1*2=3002,而不是3001 环 境 返回本节目录
6.3.2 通过指针引用数组元素 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本节目录 1 通过指针引用一维数组中的元素 如果有“int array[10],*pointer=array;” ,则: (1)pointer+i和array+i都是数组元素array[i]的地址。 (2)*(pointer+i)和*(array+i)就是数组元素array[i]。 (3)指向数组的指针变量,也可将其看作是数组名, 因而可按下标法来使用。例如,pointer[i]等价于 *(pointer+i)。 注意:pointer+1指向数组的下一个元素,而不是简单 地使指针变量pointer的值+1。其实际变化为 pointer+1*size(size为一个元素占用的字节数)。 例如,假设指针变量pointer的当前值为3000,则 pointer+1为3000+1*2=3002,而不是3001
6.32通过指针引用教组完 【例6.3】使用指向数组的指针变量来引用数组元素。 /*程序名为163cpp* 语/*程序功能:使用指向数组的指针变量来引用数组元素* maino i int array[10 pointer=array, i 序设计 printf(Input 10 numbers: ) for(i=0,i<10,i+) scanf(%d”, pointer+i);*使用指针变量来输入数组元素的值*/ printf( array[10]:”); for(=0;i<10,i++) //2mr%,me使用指向数组的指针变量输出数组y 环 境 返回本节目录
6.3.2 通过指针引用数组元素 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本节目录 【例6.3】使用指向数组的指针变量来引用数组元素。 /*程序名为l6_3.cpp */ /*程序功能:使用指向数组的指针变量来引用数组元素*/ main() { int array[10], *pointer=array, i; printf(“Input 10 numbers: ”); for(i=0; i<10; i++) scanf(“%d”, pointer+i); /*使用指针变量来输入数组元素的值*/ printf(“array[10]: ”); for(i=0; i<10; i++) printf(“%d ”, *(pointer+i)); /*使用指向数组的指针变量输出数组*/ printf(“\n”); }
6.32通过指针引用教组完 程序运行情况: Input 10 numbers: 0 123456789<CR> 据言程设计 array[10:0123456789 程序说明: 程序中第3行和第6行的2个fo语句,等价于下面的程序段: for(i=0; 1<10; 1++, pointer++) Scanf(ood pointe printf( array[10]:”) pointer-array /*使 pointer重新指向数组的第一个元素* for(i0; 1<10: 1++, pointer++) tf( %d, *pointer) 60 环 境 返回本节目录
6.3.2 通过指针引用数组元素 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本节目录 程序运行情况: Input 10 numbers: 0 1 2 3 4 5 6 7 8 9<CR> array[10]: 0 1 2 3 4 5 6 7 8 9 程序说明: 程序中第3行和第6行的2个for语句,等价于下面的程序段: for(i=0; i<10; i++,pointer++) scanf(“%d”,pointer); printf(“array[10]: ”); pointer=array; /*使pointer重新指向数组的第一个元素*/ for(i=0; i<10; i++,pointer++) printf(“%d”,*pointer);