第8章 指针(第17次课).pptVIP

  • 3
  • 0
  • 约1.16万字
  • 约 48页
  • 2017-06-29 发布于贵州
  • 举报
第8章 指针(第17次课)

8.2.4 指针变量作为函数参数(例8.3) 8.2.4 指针变量作为函数参数(例8.3) 8.2.4 指针变量作为函数参数(例8.3) 8.2.4 指针变量作为函数参数(例8.3) #include stdio.h void main( ) { int a[10]; int i; for(i=0; i10; i++) scanf(%d,a[i]); printf(\n); for(i=0; i10; i++) printf(%d , ); } 8.3.1 指向数组元素的指针 8.3.2 通过指针引用数组元素 回顾数组 P230 对数组的简单回顾(一维数组为例) 例 int a[6]; 1. 定义了一个名为a的一维数组; 2.数组元素分别是: a[0] ,a[1], a[2], a[3], a[4], a[5] 6个整型变量; 例 int a[6]; 说明: (1)同一个数组的元素在内存中是连续、顺序地存储的。整个数组有一个首地址。 (2)每个数组元素都在内存中占有存储单元,它们都有相应的地址。 a[0] a[1] a[2] a[3] a[4] a[5] a[0] a[1] a[2] a[3] a[4] a[5] 内存分配情况 a 数组的指针 数组元素的指针 8.3.1 指向数组元素的指针 int a[6]; int *p; p=a[2]; 说明 数组元素的指针─ p a[0] a[1] a[2] a[3] a[4] a[5] 内存分配情况 a p (1)指针变量的基类型必须与数组类型 。 (2)指针变量p可以指向数组中任意元素。 一致 数组元素的地址,如a[i]。 p=a[0]; p为指向数组元素的指针变量 p=a[0]; p= ; 是等价的。 C语言规定1: 代表数组中首元素的地址,即整个数组的首地址。 P230 a a[0] 即: 数组名 a 等价于: 8.3.2 通过指针引用数组元素: 举例: int a[6],*p; p=a[2]; 通过指针p引用了它所指向的数组元素a[2]。 即:*p p a a[0] a[1] a[2] a[3] a[4] a[5] 内存分配情况 10 a[2]=10; *p=10; /*直接访问方式*/ /*间接访问方式*/ a[2] *运算符 *表示符 a+1就是 的地址(指针),a+2就是 的地址(指针) ,…… C语言规定2:如果指针变量p已经指向了数组中的某个元素,则p+1 。 a p a[0] a[1] a[2] a[3] a[4] a[5] 内存分配情况 q=p+1; q=p+1 /* q指向a[3]; */ int a[6],*p=a[2],*q; 例如: 因为 a是数组首元素a[0]的地址(指针) 同一数组中的 元素的地址 a[1] a[i] 下一个 所以 a[2] a+i就是 的地址(指针)。 a[i] *(a+i) a[3] *q P231 综述: 假设有数组a和指针变量p,且 p=a; 成立,则: a[i] *(p+i) *(a+i) 下标法 指针变量+位移量 数组名+位移量 p[i] 指针变量的下标形式 引用数组元素的方法:P233 下标法 和 指针法 void main() { int a[10],i; for(i=0;i10;i++) =i*i; /*下标法*/ ……} void main() { int a[10],i; for(i=0;i10;i++) =i*i; /*指针法*/ ……} *(a+i) void main() { int a[10],*p=a,i; for(i=0;i10;i++) =i*i; /*指针法*/ ……} *(p+i) void main() { int a[10],i,*p=a; for(i=0;i10;i++) =i*i; /*下标法*/ ……} a[i] p[i] a[0] a[1] a[8] a[9] a p p void main() { int a[10],*p; for( ; ; ) scanf(%d, p); ……} pa+10 p=a p a+9 利用“指针的移

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档