对于一级指针的小小理解

学习总结,免得以后忘掉.....

要知道指针 如何使用 首先要知道 什么是指针,嘿嘿

在一级指针的情况下比较容易理解

假设有这样的代码


int a = 2;

int *p = &a;


这两句代码怎么理解呢?

首先

a 和 p  都是变量(你可以把第二句看成 int*  p, p 是一个指针变量 其指向的内存空间 的数据类型为int) , 系统都会为其 分配 四个字节的内存 如图

所以 指针其实 也只是一个 变量而已 .

那   *p  又是什么意思呢  ?

p 和 *p 是两个完全不同的概念 p 为一块内存的首地址, 而 *p 则指的是 p 指向的内存块中的数据 

形象的说的话 * 是 一把钥匙 而 p 是一扇门 *p 便是把门打开 就可以操作门内的东西

所以 

cout  << *p <<endl; 

得到 2 的结果也没什么大不了了,哈哈。


那这个指针 又 有什么用呢?

我个人的理解是  :通过 指针 就可以 间接的修改 一块内存块中的值 。

我们来写一个简单的 函数 


  1. void change(int *p)
  2. {
  3. *p = 100;
  4. }




  5. void main()
  6. {
  7. int a = 10;



  8. change(&a);
  9. printf("间接修改a的值 %d :\n", a);


  10. system("pause");
  11. }

通过用指针做形参的方法,就能够在调用函数(change)中改变主调函数中(main)变量的值

让我们来分析 一下 函数调用的过程

函数是这样调用的 

change(&a);

其中隐藏的过程是 p = &a 即 把a的地址传给 p

然后接下来 

*p = 100

去改变 a 内存块下 的值 从而达到间接修改 内存的目的  

所以 我们就不要担心return 只能返回一个数据 而苦扰了 只要用一个一级指针就可以实现 数据的传入 和传回,嘿嘿




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值