指针总结(一)

指针总结(一)

指针

指针的相关说明

     指针就是变量在内存中的地址。

     在C语言(高级语言)中,我们可以使用变量名来访问变量,这是由编译器实现的给我们的便利(我们写的C程序都需要编译器编译后来运行)。这样的话,我们就可以不用记住变量的地址,当我们访问变量的时候,本质上还是通过指针访问变量的内容。

     变量的值就是分配给该变量的内存位置所存储的值。例如:

     int a = 100 表示变量a在内存中存储的值为整型100;int *p = &a 变量p 是一个变量,变量的值是a的地址的值。

a                        p

           100        

       a的地址     


     通过一个指针访问它所指向的地址的过程称为间接访问(indirection)或解引用指针(dereferencing the pointer)。

 

warning

     指针的间接访问前提是:指针必须初始化,也就是说它指向一个变量的地址,否则会出现段错误。

     例如:

     intmain(){

           int * p;

          *p = 1;  //会出现断错误。(segment fault)

    }

 

指针的指针

     *操作符具有从右到左的结合性,这对我们理解指针的指针右很大的帮助。

     例如:int **c = NULL;是一个指向指针的指针;我们可以这样理解(用括号括起来),如:(int *) *c所示,这能帮大家理解,而不是程序得这么写。从上面可以看出来c是一个指针变量,并且该变量保存的内容为一个地址,改地址同时又指向了int 变量的地址。

如下图所示,c是一个指针的指针,b是一个指针,a是一个变量。

          

测试程序

int main(){

     inta=10;

     int*b = &a;

    

     printf(“%x\n”,&a);//变量a的地址

     printf(“%x\n”,b);//变量b的值(b的类型为int *,即保存int 类型变量的地址)

     printf(“%x\n”,&b);//打印变量b的地址,因为b虽然是一个指针,但它本身还是一个变量,所以它也有地址。

    

     int**c;

     c= &b;

     printf(“%x\n”,c);//c变量包存的地址是变量b的地址

     printf(“%x\n”,&c);//打印变量c的地址

    

}

存储结构图

a(0xa9f78754)     b(0xa9f78748)     c(0xa9f787a8)

       10                 

    0xa9f78754        

  0xa9f78748       

 

总结

1、     指针是一个变量,值为另一个变量的地址。

2、     指针使用时务必要初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值