指针变量的定义与引用

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

6.2.1 指针变量的定义

在C程序中,存放地址的指针变量需专门定义;

int *ptr1;

float *ptr2;

char *ptr3;

表示定义了三个指针变量ptr1、ptr2、ptr3。ptr1可以指向一个整型变量, ptr2可以指向一个实型变量,ptr3可以指向一个字符型变量,换句话说, ptr1、ptr2、ptr3可以分别存放整型变量的地址、实型变量的地址、字符型变量的地址。

定义了指针变量,我们才可以写入指向某种数据类型的变量的地址,或者说是为指针变量赋初值:

int *ptr1,m= 3;

float *ptr2, f=4.5;

char *ptr3, ch='a';

ptr1 = & m ;

ptr2 = & f ;

ptr3 = & c h ;

上述赋值语句ptr1 = & m表示将变量m的地址赋给指针变量ptr1,此时ptr1就指向m。三条赋值语句产生的效果是ptr1指向m;ptr2指向f;ptr3指向ch 。用示意图6 - 3描述如下:

需要说明的是,指针变量可以指向任何类型的变量,当定义指针变量时,指针变量的值是随机的,不能确定它具体的指向,必须为其赋值,才有意义。

6.2.2 指针变量的引用

利用指针变量,是提供对变量的一种间接访问形式。对指针变量的引用形式为:

*指针变量

其含义是指针变量所指向的值。

[例6-1] 用指针变量进行输入、输出。

m a i n ( )

{

int *p,m;

s c a n f ( " % d " , & m ) ;

p = & m ; / *指针p指向变量m * /

PRintf("%d",*p);

/* p是对指针所指的变量的引用形式,与此m意义相同* /

}

运行程序:

R U N ¿

3¿

3

上述程序可修改为:

m a i n ( )

{

int *p,m;

p = & m ;

s c a n f ( " % d " , p ) ; /* p是变量m的地址,可以替换& m * /

printf("%d", m);

}

运行效果完全相同。请思考一下若将程序修改为如下形式:

m a i n ( )

{

int *p,m;

s c a n f ( " % d " , p ) ;

p = & m ;

printf("%d", m);

}

会产生什么样的结果呢?事实上,若定义了变量以及指向该变量的指针为:

int a,*p;

若p=&a; 则称p指向变量a,或者说p具有了变量a的地址。在以后的程序处理中,凡是可以写& a的地方,就可以替换成指针的表示p,a就可以替换成为* p。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航