文档详情

C语言课件PPT第10章指针(简化版)概要1.ppt

发布:2017-06-28约字共26页下载文档
文本预览下载声明
第10章 指 针 * 10.1 地址和指针 指针变量是专门用来存放变量地址的变量 0001H 0000H 0002H ...... 10.1.1 指针变量的概念 int *pt; pt=i; int i; 0001H pt 0001H i 10.1.2 直接访问和间接访问 通过变量在内存中的地址进行变量值的存取,有两种存取方式: (1)直接访问──直接利用变量的地址进行存取 (2)间接访问──先通过指针变量中存储的某个变量的地址找到该变量的存储单元,再对该存储单元中的值进行访问。 int a=3; printf(“%d”,a); 03H 00H 2000H 2001H a int *pt=a; printf(“%d”,*pt); 00H 20H pt * 10.2.1定义一个指针变量 定义指针变量的一般形式:基类型 *指针变量名 基类型用于指定该指针变量可以指向的变量类型。 如: int *p1; float *p2; char *p3; 10.2 指针变量 ?一个指针变量只能指向同一个类型的变量。 * 10.2.1 定义一个指针变量 注意: 1)?在引用指针变量之前,必须首先让它指向一个已经存在的变量,即要把一个变量的地址赋给它,否则指针变量的值是不确定的。 2) 指针变量中只能存放地址,不能将一个非0的整型量或其他非地址类型的数据赋给一个指针变量, 如:int *pt=100; 是不合法的。 正确写法:int *pt ,i=3; pt=i; printf(“%d”,*pt); 错误写法: int *pt; printf(“%d”,*pt); int *pt=0; int *pb=NULL;是合法的,表示pt,pb不指向任何一个存储单元 * 10.2.2 指针变量的引用 指针变量赋值方式: 1)? 使用取地址运算符“”,将变量的地址赋给指针变量; 如:int i,*p1; p1=i; 2)在定义指针变量的同时将一个变量的地址赋给指针变量(初始化)。 如:int i,*ptr=i; * 10.2.2 指针变量的引用 指针变量的和*运算 (1) :取地址运算符,作用是取变量的地址。 (2) *:引用运算符(又称指针运算符、间接访问运算符),作用是取指针变量所指向变量的值。 和*是一对互逆运算。 例:p1=a; (1) * p1相当于a (2) *p1 相当于a (2) *a相当于a (3)(*p1)++相当于a++ * 指针变量应用举例 [例10.1] 指针变量的定义和引用 main( ) { int a=12, *p; p=a; printf(“a=%d, *p=%d\n”, a, *p); } * 10.3 指向数组的指针变量 指向数组元素的指针变量定义方法与指向普通变量的指针变量一样。 例如, char c[20],*p= c; int array[10];int *p; p=array[0]; 或 p=array; 引用数组元素的方法有两种: (1)下标法,如a[i]、p[i]。 (2)指针法,如*(p+i)、*(a+i) * 10.3.1 通过指针引用数组元素 例10.2 用指针变量引用数组元素。 main() {int a[10]; int *pt, i; for(pt=a;pta+10;pt++) scanf(%d, pt); printf(\n); for(pt=a;pta+10;pt++) printf(%d,*pt); } * 课堂练习 下列程序的输出结果是( ) main() {int a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(%d,*--p); } A) 非法 B) a[4]的地址 C) 5 D) 3 * 10.3.2 二维数组的指针和指针变量 数组名a代表的是二维数组的首地址, a+i代表的是第i行的首地址。 二维数组名a以及a+i是一个行指针值,前进单位为行。 二维数组的指针 (1)行指针的含义 假设有如下数组定义语句: int a [3][4]; 二维数组由行和列组成。其指针也分为行指针和列指针。 * 10.3.2 二维数组的指针和指针变量
显示全部
相似文档