图 指针运算 指针保存的是一个地址,地址是一个整型数,因此 可以进行各种算术运算,但仅有加减运算是有意义 的。指针运算与数组有密切的关系 指针+1表示数组中指针指向元素的下一元素地 址; ©指针-1表示数组中指针指向元素的上一元素地 址; 合法的指针操作:p+k,p-k,p1-p2 司 LoCCS
指针运算 指针+1表示数组中指针指向元素的下一元素地 址; 指针-1表示数组中指针指向元素的上一元素地 址; 合法的指针操作:p + k, p - k, p1 - p2 指针保存的是一个地址,地址是一个整型数,因此 可以进行各种算术运算,但仅有加减运算是有意义 的。指针运算与数组有密切的关系
图 数组元素的指针表示 当把数组名,如intarray,赋给了一个同类指 针intp后,intarray的元素可以通过intp访问。 第i个元素的地址可表示为intp+i,第i个元 素的值可表示为*(intp+i)。 通过指针访问数组时,下标有效范围由程序员自 己检查。 ©如输出数组a的十个元素 司 LoCCS
数组元素的指针表示 当把数组名,如 intarray,赋给了一个同类指 针intp 后,intarray 的元素可以通过intp访问。 第i个元素的地址可表示为 intp + i,第i个元 素的值可表示为 *(intp + i)。 通过指针访问数组时,下标有效范围由程序员自 己检查。 如输出数组 a 的十个元素
方法1: 方法2: for(i=0;i<10;++i) for(i=0;i<10;++i) cout <ai]; cout <*(a+i); 方法3: 方法4: for(p=a;p<a+10;++p) for(p=a,i=0;i<10;++i) cout <*p cout <*(p+i); 方法5: 下列程序段有无问题? for(p=a,i=0;i<10;++i) for(i=0;i<10;++i) cout <pi] cout <*a ++a; ) 司 LoCCS
方法3: for ( p=a; p<a+10; ++p ) cout << *p ; 方法2: for ( i=0; i<10; ++i ) cout << *(a+i); 方法1: for ( i=0; i<10; ++i ) cout << a[i]; 方法4: for ( p=a, i=0; i<10; ++i ) cout << *(p+i); 方法5: for ( p=a, i=0; i<10; ++i ) cout << p[i] ; 下列程序段 有无问题? for ( i=0; i<10; ++i ) { cout << *a ; ++a; }
③ 指针和数组的区别 在定义数组时为数组的各个元素分配了全部的存储区 在定义指针时,仅仅分配四个字节的存储区存放指针 地址。只有把一个数组名付给了对应的指针后,指针 才能当作数组使用 如有:int array[5],*intp; array 当执行了 intp=array,后 intp 司 LoCCS
指针和数组的区别 在定义数组时为数组的各个元素分配了全部的存储区 在定义指针时,仅仅分配四个字节的存储区存放指针 地址。只有把一个数组名付给了对应的指针后,指针 才能当作数组使用 如有:int array[5], *intp; array intp 当执行了 intp = array后
图 第7章间接访问一指针 ©指针的概念 ©指针运算与数组 ©动态内存分配 字符串再讨论 指针作为函数参数和返回值 ©指针数组与多级指针 ®指向多维数组的指针 ©指向函数的指针 司 LoCCS
第7章 间接访问—指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 指针作为函数参数和返回值 指针数组与多级指针 指向多维数组的指针 指向函数的指针