考点14 指针变量的定义及引用《C语言程序设计》山东(春季高考)软件与应用技术类 知识点讲解

| 9页
| 2人阅读
| 0人下载

学科网 zxxk.com学科网 zxxk.com

山东省(软件与应用技术类)春季高考

《C语言程序设计》复习讲义

模块 一  C 语言程序设计

考点 14   指针变量的定义及引用

【考纲要求】

(1)理解指针变量的定义及引用。

【知识网络】

【知识和技能要点】

一、指针与指针变量page number 0

原创精品资源学科网独家享有版权,侵权必究

学科网 zxxk.com学科网 zxxk.com学科网(北京)股份有限公司


学科网 zxxk.com学科网 zxxk.com

1. 地址与指针的概念

内存之中,每个字节皆有其编号,是谓地址。变量定义之时,编译器依其类型分配相应之空间,其首地址即此变量之地址,亦谓之指针。故指针者,地址也;而指针变量者,存此地址之变量也。诸型之指针变量,所占空间长短相同,然所指变量因类型而异,其空间亦异。

(1)地址:内存单元之编号,变量首地址即其地址。

(2)指针:地址之谓,非变量本身。

(3)指针变量:存放地址之变量,诸型指针占空间相同。

2. 指针变量的定义

指针变量亦须先定义而后用,其形为“类型标识符 *变量名;”,如 int *p;。其中类型标识符者,非指针自身之类型,乃其所指变量之类型也。故 int *p; 者,谓 p 为指向整型变量之指针。若数指针同定义,须各加一星号,如 int *p1, *p2;,二者皆为指针。

(1)形式:类型标识符 *变量名;,如 int *p;

(2)类型之义:标识符所指者,为所指变量之类型。

(3)数个同定:须各加 *,如 int *p1, *p2;

3. 定义时的常见误写

定义数个变量而混以指针者,最易致误。如 int *p1, p2; 者,p1 为指针,而 p2 乃整型变量,非指针也。盖星号只属其最近之一名,不及后者。此误编译不报,然用时或取地址而赋于整型,或解引用而施于非指针,其患甚隐。故凡混定者,宜分行书之,各明其属。

(1)误写之例:int *p1, p2; 中 p2 乃整型,非指针。

(2)缘由:星号只属最近之一名。

(3)避误之法:分行定义,各明其属。

二、取地址与间接访问

1. 取地址运算

取地址运算符为 &,施于变量之前,得其地址。如 &x 者,即变量 x 之地址,可赋于同型之指针,故书 p=&x; 则 p 指向 x。& 之后须为变量,不可为常量或表达式,盖常量无地址可取而表达式无定所。故 &55 与 &(a+b) 皆非法。

(1)符号:& 为取地址运算符,施于变量之前。

(2)用法:p=&x; 使 p 指向 x。page number 1

原创精品资源学科网独家享有版权,侵权必究

学科网 zxxk.com学科网 zxxk.com学科网(北京)股份有限公司


学科网 zxxk.com学科网 zxxk.com

(3)所限:& 后须为变量,常量与表达式皆不可。

2. 间接访问运算

间接访问运算符为 *,施于指针之前,得其所指变量。如 p 指向 x,则 *p 即 x,二者名异而实同,指同一存储单元。故 printf("%d", *p); 与 printf("%d", x); 所得无异。又 *p 可居于赋值号之左,此时所改者即 x 之值,此指针之要妙也。

(1)符号:* 为间接访问运算符,施于指针之前。

(2)同实:p 指向 x 时,*p 与 x 指同一存储单元。

(3)可左可右:*p 居赋值号之左,则改所指变量之值。

3. 通过指针改变变量的值

指针既指某变量,则可借之而改其值,不必直书其名。如 p=&x; 而后 *p=47;,则 x 之值遂为四十七。此法于函数传参尤为要:以变量之地址授予形参,则函数之内可改主调函数之变量,是谓“地址传递”,与值传递之单向者异。

(1)例:p=&x; *p=47; 则 x 得 47。

(2)意义:可不书变量之名而改其值。

(3)应用:以地址传参,可于函数内改主调函数之变量。

三、指针变量的使用规则

1. 类型须与所指变量一致

指针之类型,须与所指变量之类型相合。int 型之指针,只宜指 int 型之变量;float 型之指针,只宜指 float 型之变量。若强指异型,则解引用之时,所取之字节数与解析之法皆不合,其值必误。故定义之时,先定其所指之类型;赋值之时,取同型变量之地址。

(1)相合:int 指针指 int 变量,float 指针指 float 变量。

(2)异型之患:解引用时所取字节与解析之法不合,其值必误。

(3)常习:先定所指类型,再取同型地址。

2. 不可赋整数、不可指常量

指针变量只宜存地址,不可以整数径赋之。如 p=2060; 者,编译虽或不阻,然其警必现,盖整数非地址也;若强转之,则须明书类型转换。又不可取常量之地址而授于指针,如 p=&55; 者,编译即报错误,盖常量无存储之所,无地址可指。

(1)禁赋整数:p=2060; 非法,须强转方已。page number 2

原创精品资源学科网独家享有版权,侵权必究

学科网 zxxk.com学科网 zxxk.com学科网(北京)股份有限公司


由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。