C语言程序设计(第6章指针)2
6.2指针变量的定义和引用
6.2.1指针变量的定义
在C程序中,需要专门定义存储地址的指针变量;
int * ptr 1;
float * ptr 2;
char * ptr 3;
表示定义了三个指针变量ptr1、ptr2和ptr3。Ptr1可以指向整型变量,ptr2可以指向实型变量,ptr3可以指向字符型变量。换句话说,ptr1、ptr2和ptr3可以分别存储整数变量、实数变量和字符变量的地址。
定义了指针变量,这样我们就可以写出指向某个数据类型的变量的地址,或者给指针变量赋值初始值:
int *ptr1,m = 3;
float *ptr2,f = 4.5
char *ptr3,ch = ' a
ptr 1 = & m;
ptr 2 = & f;
ptr 3 = & ch;
上面的赋值语句ptr1 = &m表示将变量M的地址赋给指针变量ptr1,然后ptr1指向M,三个赋值语句的效果是ptr1指向M;Ptr2指向f;Ptr3指向ch。使用示意图6-3描述如下:
应该注意,指针变量可以指向任何类型的变量。定义指针变量时,其值是随机的,具体指向无法确定。必须给它赋值才有意义。
6.2.2指针变量的引用
使用指针变量来提供对变量的间接访问。指针变量的引用形式是:
*指针变量
表示指针变量所指向的值。
[例6-1]用指针变量输入输出。
main( )
{
int *p,m;
scanf("%d ",& m);
p = & m;/*指针p指向变量m * /
printf("%d ",* p);
/* p是指针指向的变量的引用,与这个m * /
}
运行程序:
3
上面的程序可以修改为:
main()
p = & m;
scanf("%d ",p);/* p是变量M的地址,可以代替& m * /
printf("%d ",M);
}
跑步效果一模一样。请考虑程序是否修改为以下形式:
main ()
{
int * p,m;
scanf("%d ",p);
p = & m;
printf("%d ",m);
}
会产生什么样的结果?事实上,如果定义了一个变量,指向它的指针是:
int a,* p;
如果p = & a;然后p指向变量a,或者p有变量a的地址,在以后的程序处理中,在
可以用&a写的地方,可以用p的指针代替,a可以用* p代替。
0条评论