内容正文:
第8章指针
8.1指针的基本概念
8.2指针变量的定义、初始化、引用
8.3指针运算
8.4指针与数组
8.6指针与函数
8.5指针与字符串
8.7指针数组
大学C/C++语言程序设计程序设计 第8章 指针
1-12章幻灯片45分钟 13-27章45分钟
8.3 指针运算
8.3.1 赋值运算
①指针变量初始化赋值
int a,*pa=&a;
②把一个变量的地址赋予指向相同数据类型的指针变量。
如: int a, *pa;
pa=&a;
③把一个指针变量的值赋予指向相同类型变量的另一个指针变量。
如:int a,*pa=&a,*pb;
pb=pa;
大学C/C++语言程序设计程序设计 第8章 指针
8.3.2 加减算术运算
①指针和整数可进行加p+n、减p-n、p++,p--运算。
指针作为地址量加上或减去一个整数n,其意义是从指针当前位置往后方或前方移动n个数据的位置。
float a,*p1=&a;
则执行语句:
p1=p1+5;
则其结果为p1向后移动了5个数据的位置,由于一个float类型的变量占4个字节,则p1实际上向后移动了5*4个字节。
思考:
指针之间能作 +、 -运算吗
大学C/C++语言程序设计程序设计 第8章 指针
8.3.3 关系运算
只有指向同一数组的两指针变量之间才能进行关系运算。
例1: int a[10],*p1,*p2,*p3;
p1=&a[1];p2=&a[1];p3=&a[5];
则:
p1==p2 p3>p1 p2<p3
例2: int *p;
p==0 ; p!=0;
p是空指针,不指向任何变量。
p是非空指针,指向确定变量。
大学C/C++语言程序设计程序设计 第8章 指针
9. 设有以下程序:
#include<stdio.h>
main()
{ int a[5]={5,1,2,9,8};
int *px=a;
printf("%d
",(*px)++);
printf("%d
",*px++);
printf("%d
",*(++px));
}
(*px)++相当于a[0]++;因此输出5,a[0]+1变成6;
*px++相当于*(px++),先引用px所指向存储单元的值,即a[0],然后px加1指向a[1];因此输出6,px指向a[1];
*(++px) 指针px先加1,指向a[2],然后输出。因此输出2。
5
6
2
大学C/C++语言程序设计程序设计 第8章 指针
8.4 指针与数组
例:
int a [10];
int *p;
p =a;// p =&a[0];
或 int *p =a;
大学C/C++语言程序设计程序设计 第8章 指针
8.4 指针与数组
例如: int a[10] ,*p;
p =a;
问: a[i]元素的表示形式有几种?
a[i]元素的地址表示形式有几种?
大学C/C++语言程序设计程序设计 第8章 指针
a[0]
a