a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 75|回复: 0

[程序员] 2012年软件水平考试程序员之程序设计知识要点(17)

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
5.1 指针和指针变量   指针是轨范设计说话的一个主要概念。指针在C轨范中有以下多方面的浸染:
+ l: P, E* s4 _1 C  (1)操作指针能借居引用它所指的对象。
, V# T9 q' ?8 d, s% K  (2)操作各类类型的指针形式参数,能使函数增添描述能力。6 Z9 y# n* `4 h( u
  (3)指针与数组连系,使引用数组元素的形式加倍多样、访谒数组元素的手段加倍矫捷。+ l' F/ d* x9 b% W# M2 F. T1 X
  (4)指针能用来描述数据和数据之间的关系,以便机关复杂的数据结构。当一个数据A要联系关系另一个数据B时,在数据A中增添一个指向数据B的指针就可实现数据A联系关系数据B。连系系统供给的动态分配存储行动措施,又能机关出各类动态数据结构。
$ N& n. w* K0 D: v0 \3 K1.指针的根基概念 6 A7 p  x% f; u" ]9 R
  为了区别内存的分歧位置,内存被分成字节,内存的全数字节挨次地赋予一个称为地址的编号。轨范中的变量将在内存中占有必然的内存字节,在这些字节中存储的数据信息称为变量的内容。一个变量占用持续的若干个内存字节时,最前面的一个字节的地址就作为该变量的地址。指针就是内存地址,是变量的地址,或函数的进口地纸怪虽量的地址在轨范执行时,起着很是主要的浸染。当计较机在计较含有变量的表达式时,计较机按变量的地址掏出其内容,并按变量的地址将计较结不美观存入到变量占有的内存中。如代码:
1 L/ x& W! U! c/ {  int x=l;
$ x7 J2 o5 I5 A0 `; s  x=x+2;
: y& Q, h( h+ r# _0 `  其中语句“x=x+2;”中的第一个x涉及到变量x占有的内存,第二个 x是引用变量 x的内容。该语句的意义是“取X的内容,完成加上2的计较,并将计较结不美观存入变量X占有的内存中。”3 t! k. p' m1 f  w$ a* R
2.指针变量和它所指向的变量
+ Z; w4 U' z5 u6 E9 A2 |) r  在C说话中,地址也作为一种值,能被存储、斗劲、赋值,并称地址数据为指针类型,而称存储地址值的变量为指针变量,简称指针。C轨范可用运算符&取变量的地址,如表达式&x的值就是变量X的地址。轨范除能按名引用变量外,也可操作变量的地址引用变量。按变量名引用变量称为直接引用,而将变量A的地址存于另一变量B中,借助于变量B引用变量A称为对A的借居引用。0 ^: o( ?) p6 L3 q# f
3.指针变安的界说、初始化和引用
- V% i) p/ v! m  指针变量用于存放某个变量的地址。界说指针变量的一般形式为:
' q5 b- X. I2 @* z* d- |  类型 * 指针变量名;
* b2 u2 P0 v9 |7 [, u6 s5 w, v  或
+ B; W0 q. j# L2 O  类型 * 指针变量名=初值表达式;
+ F9 b% ?* }+ g0 u  此鱿脯指针变量名是标识符,指针变量名之前的符号“*”,暗示该变量是指针类型的。而最前面的“类型”,暗示该指针变量能指向变量或函数的类型。初值表达式是一个地址表达式,如表达式中有某变量的地址表达式,则这个变量应是前面已界说的。
! ^- Q- e, n* `0 D1 e  在C说话中,当界说局部指针变量时,如未给它指定初值,则其值是不确定的。轨范在使用它们时,应首先给它们赋值。误用其值不确定的指针变量借居引用其它变量,会引起意想不到的错误。为明晰暗示指针变量不指向任何变量,在C语押朐睹0值暗示这种情形,记为NULL。如
6 u( y  E! ~+ i1 E' I) H  ip= NULL;
* n( {; V$ V7 |. U$ Q3 g5 m5 |# v  也称指针值为0的指针变量为空指针。对于静态的指针变量,如在界说时未给它指定初值,系统自动给它指定初值0。' Z& W2 q# f# I1 A! _9 k: u
  指针变量取轨范对象的(起头)地址止墁不能将一个整型量或任何其它非地址值赋给一个指针变量。此外,指针变量对所指向的对象也有类型限制,不能将一个不能指向的对象的地址赋给指针变量。若有以下界说:, G3 W! O# `3 V9 d1 @
  int i=100,j,*ip,*intpt;
2 u" ]$ W: ~9 d8 u* j  float f,*fp;$ j  X6 m$ I* v- |( t6 J$ Y
  以下代码如注释所叙。
  c% L% F9 Q1 e0 R. H  iP=&i;/*使ip指向i*/
9 G) Y$ k+ ?& v! v. ^  intpt=ip;/*使intpt指向ip所指变量*/
- L& {. w, I5 K  fp= &f;/*使fp指向正*/
# I3 u/ v. l9 R0 E; f  ip=NULL;/*使 ip不再指向任何变量*/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 12:27 , Processed in 0.183789 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表