0
点赞
收藏
分享

微信扫一扫

c 里的指针,摘自C语言入门经典


声明指针:

 

以下语句可以声明一个只想int类型变量的指针

 


int *pointer;

 

 

pointer变量的类型是int *

它可以存储任意int类型变量的地址。这条语句创建了pointer,但没有初始化它,未初始化的指针是非常危险的,所以应总是在声明指针时对它进行初始化,修改:


int *pointer = NULL

 

 

如果用已声明的的变量地址初始化pointer变量,可以使用寻址运算符&

例如:


int number = 10; int *pointer = &number;


 

===================================================================

通过指针访问值

 

使用间接运算符*可以访问指针所指的变量值

例:


int number = 15; int *pointer = &number; int result = 0;


pointer变量含有number变量的地址,所以可以在表达式中使用它计算一个新的汇总值,如下:


result = *pointer + 5


那我能否这样理解:pointer是地址,而*pointer,是这个地址上的值?下面给出解释:

 

int number = 10;
        int *pointer = NULL;
        printf("\nnuymber's address: %p", &number);
        printf("\nnuymber's value: %d\n\n", number);
        
        pointer = &number;
        printf("pointer's address: %p\n", &pointer);//pointer的地址
        printf("pointer's value: %p\n", pointer);//存储在pointer的值,它是number的地址
        printf("pointer's value pointed to: %d\n\n", *pointer);//pointer所含地址 内 存储 的值,它是存储在number中的值

 

打印出:

nuymber's address: 0x7fff5fbff93c
nuymber's value: 10

pointer's address: 0x7fff5fbff930
pointer's value: 0x7fff5fbff93c
pointer's value pointed to: 10

 

pointer变量是number的地址,使用*pointer可以访问number的值,即间接地使用number变量的值。

 

 

 


举报

相关推荐

0 条评论