《程序设计》cs.u20119 指针运算 指针保存的是一个地址,地址是一个整型数,因此 可以进行各种算术运算,但仅有加减运算是有意义 的。指针运算与数组有密切的关系 指针+1表示数组中指针指向元素的下一元素 地址 指针1表示数组中指针指向元素的上一元素地 址 冷合法的指针操作:p+kp-kp1-p2 程序设计16
《程序设计》 cs.sjtu 2011.9 程序设计 - 16 指针运算 ❖ 指针+1表示数组中指针指向元素的下一元素 地址; ❖ 指针-1表示数组中指针指向元素的上一元素地 址; ❖ 合法的指针操作:p + k, p - k, p1 - p2 指针保存的是一个地址,地址是一个整型数,因此 可以进行各种算术运算,但仅有加减运算是有意义 的。指针运算与数组有密切的关系
《程序设计》cs.u20119 数组元素的指针表示 冷当把数组名,如 intarray,赋给了一个同类指针 int后, intarray的元素可以通过inp访问。第i 个元素的地址可表示为int+i,第个元素的值 可表示为*(intp+i 冷通过指针访问数组时,下标有效范围由程序员自 己检查。 冷如输出数组a的十个元素 程序设计1
《程序设计》 cs.sjtu 2011.9 程序设计 - 17 数组元素的指针表示 ❖ 当把数组名,如 intarray,赋给了一个同类指针 intp 后,intarray 的元素可以通过intp访问。第i 个元素的地址可表示为 intp + i,第i个元素的值 可表示为 *(intp + i)。 ❖ 通过指针访问数组时,下标有效范围由程序员自 己检查。 ❖ 如输出数组 a 的十个元素
《程序设计》cs.u20119 方法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;++) cout≤<*p; cout≤≤(p+i) 方法5: 下列程序段有无问题? ior(p=a,i=0;110;+i)for(i=0;i<10;++i) cout <<p(] cout≤≤a; +a; 程序设计18
《程序设计》 cs.sjtu 2011.9 程序设计 - 18 方法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; }
《程序设计》cs.u20119 指针和数组的区别 冷虽然通过指针可以访问数组,但两者本质是不同的 冷在定义数组时为数组的各个元素分配了全部的存储区, 而在定义指针时,仅仅分配四个字节的存储区存放指 针地址。只有把一个数组名付给了对应的指针后,指 针才能当作数组使用 冷如有: int array[5],*intp; ar回当执行了 intp s array intp 后 程序设计19
《程序设计》 cs.sjtu 2011.9 程序设计 - 19 指针和数组的区别 ❖ 虽然通过指针可以访问数组,但两者本质是不同的。 ❖ 在定义数组时为数组的各个元素分配了全部的存储区, 而在定义指针时,仅仅分配四个字节的存储区存放指 针地址。只有把一个数组名付给了对应的指针后,指 针才能当作数组使用 ❖ 如有:int array[5], *intp; array intp 当执行了 intp = array 后
《程序设计》cs.u20119 第7章间接访问指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 冷指针作为函数参数和返回值 冷指针数组与多级指针 指向多维数组的指针 指向函数的指针 程序设计20
《程序设计》 cs.sjtu 2011.9 程序设计 - 20 第7章 间接访问—指针 ❖ 指针的概念 ❖ 指针运算与数组 ❖ 动态内存分配 ❖ 字符串再讨论 ❖ 指针作为函数参数和返回值 ❖ 指针数组与多级指针 ❖ 指向多维数组的指针 ❖ 指向函数的指针