河北经贸大学信息技术学院C++程序设计基础课件第五章 指针.pptVIP

  • 1
  • 0
  • 约1.21万字
  • 约 58页
  • 2019-05-10 发布于广东
  • 举报

河北经贸大学信息技术学院C++程序设计基础课件第五章 指针.ppt

2、指向一维数组的指针变量 int a[10]; int *p; int a[10], *p; 因为 a与a[0]是等价的,所以可进行如下指针赋值运算: p=a; 或 p=a[0]; ? 注意:① 数组名代表数组首地址,即第0号元素的地址; ② a不代表整个数组,上述语句“p=a;”的作用是“把a数组的首地址赋给指针变量p”,而不是“把数组a各元素的值赋给p”。 ③ 定义时可以进行初始化: int *p=a[0]; //两侧的类型均为整形指针类型: int* int *p; *p=a[0]; 但 3、数组元素的引用 引用数组元素可以用下标法(如a[1]);也可以用指针法,即通过指向数组元素的指针找到所需的元素。? int a[10], *p; p=a; *p=5; a[0]=5; p=a[3]; *p=5; a[3]=5; C++规定:无论数组的数据类型如何,若指针变量p已指向数组中的某一元素,则p+1指向同一数组中的下一个元素(而不是将p简单的加1) 例如: int x[10], *p=x; p+1意味着使p在原值的基础上加4个字节,以使它指向下一元素; double x[10], *p=x; p+1意味着使p在原值的基础上 加8个字节,以使它指向下一元素; 4、通过指针访问一维数组 总之: ① 设d是一个数组元素所占的字节数,则p+i表示指针移动了i个元素,而它实际的地址变化为:p+i*d; ② *p即a[0],*(p+i)即a[i] 5、在使用指针变量引用数组时,应注意以下问题: ①、 p+1或a+1实际上表示数组元素a[1]的地址(a[1]);则p+i或a+i表示数组的第i个元素的地址(a[i]); 同理: *(p+i)或*(a+i)表示p+i或a+i所指向的数组元素,即a[i] ; ②、 指向数组的指针变量也可以带下标;如:p[i]与*(p+i)等价; ③、 若p已经指向某个数组元素a[i],则p+j表示指向数组元素a[i+j]; ④、 可以使用p++使指针变量p的值不断改变: for (p=a; p(a+10); p++) cout *p; ⑤、在程序运行期间,要始终注意指针变量当前所指向的是哪一个元素; 小结 数组第 i 个元素地址的表示方法: a[i], a+i, p+i, p[i] 数组第 i 个元素的表示方法: a[i], *(a+i), *(p+i), p[i] 1、引用一个数组元素的两种方法: ①、下标法:用a[i]或p[i]来引用数组a中的第i号元素; ②、指针法:用*(p+i)或*(a+i)来引用数组中的第i号元素; 可见:任何由数组下标完成的操作都能由指针来实现; a[i] *(p+i) a[i] p+i 2、注意指针变量的运算: 若p指向数组的开始,即:p=a; Ⅰ、p++; 使p指向下一元素,即a[1]; Ⅱ、*p++; 等价于*(p++); for (i=0,p=a; i10; i++) cout *p++; Ⅲ、注意*(p++)与*(++p)的区别; Ⅳ、(*p)++表示p所指向的元素值加1; Ⅴ、若指针变量指向数组的第i号元素,则: *(p--)相当于a[i--] *(--p)相当于a[--i] *(++p)相当于a[++i] 例 5.4.1 分别用下标法、指针法、位移法输入、输出数组元素。 #includeiostream.h void main( ) { int a[10];  int i;  for (i=0; i10; i++) cina[i];  coutendl;  for (i=0; i10; i++) couta[i];  } 方法一: 方法二: #includeiostream.h void main( ) { int a[10];  int i, *p; /*定义指针变量*/ p=a; /*建立关联*/ for (i=0; i10; i++) cin*p++;  coutendl;  for (p=a; pa+10; p++) /*使用*/ cout*p;  } 方法三: #includeiostream.h void main( ) { int a[10];  int i ;  for (i=0; i10; i++) cina[i];  coutendl; for (i

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档