指针学习的进一步理解
来源:互联网 发布:成龙小龙女知乎 编辑:程序博客网 时间:2024/06/16 21:23
首先分析下面这个程序:
#include <stdio.h>int *test(){int i =5 , * pi = &i ;return pi ;}void main (){int * pj;pj = test();printf("%d\n",*pj);}
看起来结果是显示正常的,其实这个程序有着致命的错误
#include <stdio.h>int *test(){int i =5 , * pi = &i ;return pi ;}void test2(){int j = 3;}void main (){int * pj;pj = test();test2();printf("%d\n",*pj);}
这又是为什么呢? 这到底是怎么回事啊
答案:其实是变量i 的生存期仅仅限于test函数,返回main函数时其实生存期已经结束了,那为什么没有错误呢,变量i所标识的空间不是系统所占有的空间(要不然开始就不会分配给他),虽然生存期结束了,但是内存状态没有改变所以当程序访问时依然可以输出5,下面就不行了,因为那个内存单元有重新分配给了变量j
- 指针学习的进一步理解
- 指针的进一步理解
- 对指针的进一步理解
- 对指针的进一步理解
- webservice的进一步理解
- LiveMesh的进一步理解
- 多态性的进一步理解
- memset的进一步理解
- 宏的进一步理解
- NSRunLoop的进一步理解
- NSRunLoop的进一步理解
- NSRunLoop的进一步理解
- NSRunLoop的进一步理解
- NSRunLoop的进一步理解
- const的进一步理解~
- ajax的进一步理解
- HashMap的进一步理解
- 深入理解C语言10 进一步学习的一些建议
- PHP基础20-比较帖子的相似度
- Beautiful Year sdut 1485
- 2013/8/19
- 开发板与pc之间的文件传输:kermit and lrzsz
- Android自动开关机实现
- 指针学习的进一步理解
- oracle查询表空间文件所在路径
- 如果我只有一台裸机,我不能安装任何外来软件,但是我要让它变成一台有上网和开发功能的机器,我该怎么办?
- ctrl+鼠标左键无法连接进入类 (解决方法)
- 在Rocks上编译带VTST代码(NEB)的vasp 5.2 NEW
- 在文件内搜索
- devstack源码分析
- 单机小游戏大本营 经典流行 百种游戏 还不赶紧收藏
- Android之背景颜色小知识(笔记)