《C++大学教程》2007.9 方法1: 方法2: for(i=0;i<10;++i) for(i=0;i10;++i) printf(“%d”,al); printf(“%d”,*(a+i)); 方法3: 方法4: for p=a;p<a+10;++p) for (p=a,i=0;i<10;++i) printf(“%d”,*p); printf(“%d”,*(p+i)); 方法5: 下列程序段有无问题? for p=a,i=0;i<10;++i) for (i=0;i<10;++i) printf(“y%d”,pll); { printf(“%d”,*a); ++a
《C++大学教程》 2007.9 方法3: for ( p=a; p<a+10; ++p ) printf( “%d” , *p ); 方法2: for ( i=0; i<10; ++i ) printf( “%d” , *(a+i) ); 方法1: for ( i=0; i<10; ++i ) printf( “%d” , a[i] ); 方法4: for ( p=a, i=0; i<10; ++i ) printf( “%d” , *(p+i) ); 方法5: for ( p=a, i=0; i<10; ++i ) printf( “%d” , p[i] ); 下列程序段 有无问题? for ( i=0; i<10; ++i ) { printf( “%d” , *a ); ++a; }
《C++大学教程》2007.9 指针和数组的区别 虽然通过指针可以访问数组,但两者本质是不同的。 在定义数组时为数组的各个元素分配了全部的存储区, 而在定义指针时,仅仅分配四个字节的存储区存放指 针地址。只有把一个数组名付给了对应的指针后,指 针才能当作数组使用 如有:int array[5],*intp; array 当执行了 intp array intp 后
《C++大学教程》 2007.9 v 虽然通过指针可以访问数组,但两者本质是不同的。 v 在定义数组时为数组的各个元素分配了全部的存储区, 而在定义指针时,仅仅分配四个字节的存储区存放指 针地址。只有把一个数组名付给了对应的指针后,指 针才能当作数组使用 v 如有:int array[5], *intp; array intp 当执行了 intp = array 后
《C++大学教程》2007.9 第7章间接访问一指针 指针的概念 指针运算与数组 指针作为函数参数和返回值 动态内存分配 水 字符串再讨论 指针数组与多级指针 指向多维数组的指针 指向函数的指针
《C++大学教程》 2007.9 v 指针的概念 v 指针运算与数组 v 指针作为函数参数和返回值 v 动态内存分配 v 字符串再讨论 v 指针数组与多级指针 v 指向多维数组的指针 v 指向函数的指针
《C++大学教程》2007.9 指针作为函数参数和返回值 指针作为函数参数 数组名作为函数参数 返回指针的函数 冬引用和引用传递 冬返回引用的函数
《C++大学教程》 2007.9 v 指针作为函数参数 v 数组名作为函数参数 v 返回指针的函数 v 引用和引用传递 v 返回引用的函数
《C++大学教程》2007.9 指针作为函数参数 例:编一函数,交换二个参数值。 swap(int a,int b) swap(int *a,int *b) fint c; fint c; 3 X c=a; C=*a; a=b; *a=*b; b=c; *b=C; swap(x,y) swap(&x,&y) swap(5,6) 用指针作为参数可以在函数中修改主调程序的 变量值,即实现变量传递。但必须小心使 用!!!
《C++大学教程》 2007.9 例:编一函数,交换二个参数值。 swap(int a, int b) {int c; c=a; a=b; b=c; } swap(int *a, int *b) {int c; c=*a; *a= *b; *b=c; } swap(x, y) swap(5, 6) swap(&x, &y) 3 4 x y a b 用指针作为参数可以在函数中修改主调程序的 变量值,即实现变量传递。但必须小心使 用!!!