指针学习

指针是一个数值为地址的变量(或更一般的说是一个数据对象),正如char类型的变量用字符作为其数值,而int类型变量的数值是整数,指针变量的数值表示的是地址。

将某个指针变量命名为ptr

1 ptr = & pooh;  /*把pooh的地址赋给ptr*/

对于这个语句,我们称ptr“指向”pooh。

ptr和&pooh的区别在于:ptr是个变量,pooh是一个常量。

当然,ptr可以指向任何地方:

ptr = & bah;  /*令ptr指向bah而不是pooh*/

这时ptr的值是bah的地址。

要创建一个指针变量,首先要声明其类型。假设欲把ptr声明为可以存放一个int数值地址,就需要使用间接运算符

假定ptr指向bah,如下所示:

1 ptr = & bah;

 这时就可以使用间接运算符获取bah中存放的数值

val = * ptr;  /*得到ptr指向的值*/

 

语句ptr = &bah;以及语句val = * ptr;放在一起等同于下面的语句:

1 val = bah;

由此看出,使用地址运算符和间接运算符可以间接完成上述语句的功能,这也正是“间接运算符”名称的由来。

指针的声明:

pointer ptr;  /*不能这样声明一个指针*/

 

原因是这对于声明一个变量为指针是不够的,还需要说明指针所指向变量类型

不同的变量类型占用的存储空间大小不同 ,而有些指针操作需要知道变量类型占用的存储空间

同时,程序也需要了解地址中存储的是何种数据。

例如,longfloat两种类型的数值可能使用相同大小的存储空间,但是他们的数据存储方式完全不同。

1 int * pi;  /*pi是指向一个整数变量的指针*/
2 char * pc;  /*pc是指向一个字符变量的指针*/
3 float * pf, * pg;  /*pf和pg是指向浮点变量的指针*/

 类型表示符表明了被指向变量的类型,而表示该变量为一指针。

声明intpi;

意思是pi是一个指针,而且pi是int类型的。

posted @ 2018-09-14 22:59  小骏不抬杠  阅读(171)  评论(0编辑  收藏  举报