您的位置:首页 > 其它

对于一级指针的小小理解

2014-12-18 22:05 246 查看
学习总结,免得以后忘掉.....

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

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

假设有这样的代码

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 只能返回一个数据 而苦扰了 只要用一个一级指针就可以实现 数据的传入 和传回,嘿嘿
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: