RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
c
  • 作者:zhaozj
  • 发表时间:2020-12-23 11:03
  • 来源:未知

文字来源 VC世界--C语言教室

自我存档,也献给和我一样的DElphi程序员

 指针是C语言中广泛使用的一种数据类型。 能象汇编语言一样处理内存地址,从而编出精练而高效的程序。  根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。   内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明它们之间的关系。  对于一个内存单元来说,单元的地址即为指针, 其中存放的数据才是该单元的内容。  严格地说,一个指针是一个地址, 是一个常量。  而一个指针变量却可以被赋予不同的指针值,是变量。   但在常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址, 是常量,  “指针变量”是指取值为地址的变量。 定义指针的目的是为了通过指针去访问内存单元。   因为数组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址, 也就找到了该数组或函数。  只要该指针变量中赋予数组或函数的首地址即可。

指针变量的类型说明

  对指针变量的类型说明包括三个内容:(1)指针类型说明,即定义变量为一个指针变量; (2)指针变量名;(3)变量值(指针)所指向的变量的数据类型。  其一般形式为: 类型说明符 *变量名;   其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。  例如: int *p1;表示p1是一个指针变量,它的值是某个整型变量的地址。 或者说p1指向一个整型变量。至于p1究竟指向哪一个整型变量, 应由向p1赋予的地址来决定。  再如:staic int *p2; /*p2是指向静态整型变量的指针变量*/float *p3; /*p3是指向浮点变量的指针变量*/char *p4; /*p4是指向字符变量的指针变量*/ 应该注意的是,一个指针变量只能指向同类型的变量,如P3 只能指向浮点变量,不能时而指向一个浮点变量, 时而又指向一个字符变量。

指针变量的赋值

  指针变量必须赋予具体的值。未经赋值的指针变量不能使用。    指针变量的赋值只能赋予地址, 决不能赋予任何其它数据。    C语言中提供了地址运算符&来表示变量的地址。其一般形式为: & 变量名; 如&a变示变量a的地址,&b表示变量b的地址。 变量本身必须预先说明。设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式:(1)指针变量初始化的方法 int a;int *p=&a;(2)赋值语句的方法 int a;int *p;p=&a;不允许把一个数赋予指针变量,故下面的赋值是错误的: int *p;p=1000; 被赋值的指针变量前不能再加“*”说明符,如写为*p=&a 也是错误的