对于一级指针的小小理解
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 只能返回一个数据 而苦扰了 只要用一个一级指针就可以实现 数据的传入 和传回,嘿嘿
要知道指针 如何使用 首先要知道 什么是指针,嘿嘿
在一级指针的情况下比较容易理解
假设有这样的代码
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 只能返回一个数据 而苦扰了 只要用一个一级指针就可以实现 数据的传入 和传回,嘿嘿
相关文章推荐
- 对于指针(一级指针)的理解(文中如有理解错误,欢迎指正,大家互相学习)
- 对于C语言中数组名是指针的理解
- 对于数组和指针的理解
- 对于各种指针的理解
- 谈一下我对于指针的理解 .
- 对m_hWnd和this指针的一点小小理解
- 对于指针的新理解
- 关于一维数组、二维数组、一级指针、二级指针、指针数组、数组指针、空指针、字符指针、const的个人理解
- 一级指针简单理解
- 彻底理解链表中为何使用二级指针或者一级指针的引用
- 彻底理解链表中为何使用二级指针或者一级指针的引用
- 数组指针和指针数组的一点小小理解
- 对于数组与指针的理解
- 关于一级指针和二级指针的部分理解(I)
- 对于数组和指针的理解
- 对于C++中引用和指针的理解
- 谈一下我对于指针的理解
- 对于数组指针的一点理解
- 对于数组指针—指针数组;函数指针—函数指针数组,指向函数指针数组的指针,的理解
- C中对于指针的理解