学习总结,免得以后忘掉.....
要知道指针 如何使用 首先要知道 什么是指针,嘿嘿
在一级指针的情况下比较容易理解
假设有这样的代码
int a = 2;
int *p = &a;
这两句代码怎么理解呢?
首先
a 和 p 都是变量(你可以把第二句看成 int* p, p 是一个指针变量 其指向的内存空间 的数据类型为int) , 系统都会为其 分配 四个字节的内存 如图
所以 指针其实 也只是一个 变量而已 .
那 *p 又是什么意思呢 ?
p 和 *p 是两个完全不同的概念 p 为一块内存的首地址, 而 *p 则指的是 p 指向的内存块中的数据
形象的说的话 * 是 一把钥匙 而 p 是一扇门 *p 便是把门打开 就可以操作门内的东西
所以
cout << *p <<endl;
得到 2 的结果也没什么大不了了,哈哈。
那这个指针 又 有什么用呢?
我个人的理解是 :通过 指针 就可以 间接的修改 一块内存块中的值 。
我们来写一个简单的 函数
- void change(int *p)
- {
- *p = 100;
- }
- void main()
- {
- int a = 10;
- change(&a);
- printf("间接修改a的值 %d :\n", a);
- system("pause");
- }
通过用指针做形参的方法,就能够在调用函数(change)中改变主调函数中(main)变量的值
让我们来分析 一下 函数调用的过程
函数是这样调用的
change(&a);
其中隐藏的过程是 p = &a 即 把a的地址传给 p
然后接下来
*p = 100
去改变 a 内存块下 的值 从而达到间接修改 内存的目的
所以 我们就不要担心return 只能返回一个数据 而苦扰了 只要用一个一级指针就可以实现 数据的传入 和传回,嘿嘿