《C语言程序设计》课件 09 指针.pptx
程序设计基础——C语言程序设计2023翻转课堂实用教程
第09章指针指针9.1指针与函数9.2指针与数组9.3
9.1指针
123指针的概念指针变量的定义与使用指针变量的运算知识点指针的案例分析案例分析指针相关练习题练习题
9.1.1指针知识点程序在运行时,会为变量分配内存空间。分配的内存空间会有一个唯一的地址编号,在C语言中又叫做指针。通过指针可以找到该内存单元。地址取值范围:(32位系统为例)32位系统的内存条,32个元件,232个组合=4*230,4GB内存。内存地址编号从00XFFFFFFFF(十六进制表示)指针的概念指针变量保存某个内存空间的地址,并对该内存空间中的值进行操作。
指针变量的定义方式为:数据类型名*指针变量名;或者数据类型名*指针变量名=地址值;1.指针变量的定义与使用指针变量指向的变量的数据类型指针变量声明符保存的是某个变量的地址int*pInt;//指向int型变量的指针char*pStr=NULL;//NULL为空指针,stdio.hint*pInt1,*pInt2;9.1.1指针知识点
举例:doublenum=3.14;double*pDouble=num;//定义一个指向double型变量num的指针pDouble1.指针变量的定义与使用指针变量pDouble指向num示意图num3.14pDoublenum取地址运算符,num的地址pDouble指向num9.1.1指针知识点
指针变量占用的内存大小,仅与地址信息的大小有关,与类型无关。#includestdio.hintmain(){inta=100;charc=C;doubled=3.14;int*pInt=a;char*pStr=c;double*pDouble=d;//分别输出int指针、字符指针、浮点型指针占用的字节数printf(%d%d%d,sizeof(pInt),sizeof(pStr),sizeof(pDouble));return0;}1.指针变量的定义与使用运行结果(64位系统,8个字节)8889.1.1指针知识点
(1)取内容与取地址通过变量的地址/指针,同样可以访问到该变量的值。#includestdio.hintmain(void){ int*p,a=3; p=a; //两种获取变量a的方式,*p和a等价。 printf(*p的值为:%d,a的值为:%d\n,*p,a); *p=6;//通过指针p可以修改a的值 printf(*p的值为:%d,a的值为:%d\n,*p,a); return0;}2.指针变量的运算取内容,*p:p指向的变量a的值,等价取地址,a:a的地址运行结果:*p的值为:3,a的值为:3*p的值为:6,a的值为:6a3pa*p9.1.1指针知识点
(2)赋值运算doublenum=3.14,value=0.618;double*pDouble1=num,*pDouble2;//(a)pDouble1=value;//(b)修改pDouble1的值,让其指向value变量pDouble2=pDouble1;//(c)2.指针变量的运算(a)(b)(c)9.1.1指针知识点
(3)加法、减法和比较运算指针变量还可以进行加法、减法和比较运算,一般当指针变量指向数组中的元素时,才有实际的含义。2.指针变量的运算9.1.1指针知识点指针变量只能与整数常量i进行加减法运算,加或减同类型数据长度的i倍,指针往后或往前移动i个同类型的数据。指针pI的加减运算图
#includestdio.hintmain(){ inta=30,*p=a,*pI=a; doubleb=3.14,*pD=b; charc=C,*pC=c; //前3个输出语句,输出各个类型占用的字节数 printf(sizeof(int)is%d\n,sizeof(int)); printf(sizeof(double)is%d\n,sizeof(double)); printf(sizeof(char)is%d\n,siz