指针运用过程中的常见问题
2016-05-10 22:23
465 查看
1:为什么不能把局部变量的地址作为函数返回值返回?
答:当函数调用结束后,被调用函数的内存空间就会被释放,内存空间的使用权又会回到系统手中。虽然局部变量的地址被传回了主函数,但是由于这个地址所在的内存空间的使用权已经不在程序手中,所以此时取到的地址是一个不合法的地址,因此,不能把局部变量的地址作为函数返回值返回。
2:被调用函数形参的地址和实参的地址一样吗?
答:
举例:int a=12; int b=10;
judge(&a,&b); //调用函数judge ,实参是变量a和b的地址,假设,a的地址是0x1234,b的地址是0x4567,那么形参m ,n的地址也会是0x123和0x456吗??
void judge(int* m,int* n) //定义了函数judge
在这里,只是把a和b的地址当成值传递给了m,n,所以这里0x1234和0x4567只是m和n的值,而m,n的地址就由系统随机分配,具体是什么,我们也不知道。
3:假设char* a=“i am a girl'; 为什么拿到这个字符串的首地址就等于拿到了这个字符串??
答:因为在这里,内存空间是顺序排列的,当拿到第一个地址的时候,就可以顺序的往下找,对于字符串来说,只要找到结束符‘\0’的时候就等于拿到这个字符串。
4:假设int i=20; i的地址为0x1234;什么情况下i 和这个地址的联系会被斩断,下一个变量的地址还能被赋为0x1234吗?
答:当函数调用结束,活着程序执行完毕后,这个内存空间就会被释放,这时i和这个地址的联系就会被斩断,当声明了下一个变量时,系统又会为这个变量分配一个内存空间,但是不能确定这个变量是否一定能拿到0x1234这个地址,因为分配的内存空间是随机的,也就意味着这个空间的地址是不确定的。
答:当函数调用结束后,被调用函数的内存空间就会被释放,内存空间的使用权又会回到系统手中。虽然局部变量的地址被传回了主函数,但是由于这个地址所在的内存空间的使用权已经不在程序手中,所以此时取到的地址是一个不合法的地址,因此,不能把局部变量的地址作为函数返回值返回。
2:被调用函数形参的地址和实参的地址一样吗?
答:
举例:int a=12; int b=10;
judge(&a,&b); //调用函数judge ,实参是变量a和b的地址,假设,a的地址是0x1234,b的地址是0x4567,那么形参m ,n的地址也会是0x123和0x456吗??
void judge(int* m,int* n) //定义了函数judge
在这里,只是把a和b的地址当成值传递给了m,n,所以这里0x1234和0x4567只是m和n的值,而m,n的地址就由系统随机分配,具体是什么,我们也不知道。
3:假设char* a=“i am a girl'; 为什么拿到这个字符串的首地址就等于拿到了这个字符串??
答:因为在这里,内存空间是顺序排列的,当拿到第一个地址的时候,就可以顺序的往下找,对于字符串来说,只要找到结束符‘\0’的时候就等于拿到这个字符串。
4:假设int i=20; i的地址为0x1234;什么情况下i 和这个地址的联系会被斩断,下一个变量的地址还能被赋为0x1234吗?
答:当函数调用结束,活着程序执行完毕后,这个内存空间就会被释放,这时i和这个地址的联系就会被斩断,当声明了下一个变量时,系统又会为这个变量分配一个内存空间,但是不能确定这个变量是否一定能拿到0x1234这个地址,因为分配的内存空间是随机的,也就意味着这个空间的地址是不确定的。
相关文章推荐
- 配置TCP/IP网络
- 《15个提高Google搜索的技巧》
- 《15个提高Google搜索的技巧》
- 03:矩形分割 来源OJ
- 剑指offer之面试题9菲波那切数列
- 6.4目录管理
- leetcode 205. Isomorphic Strings 巧妙使用hashmap.put返回值求解
- Ext.Panel 面板控件、 Ext.window.Window 窗口控件、 Ext.container.Viewport 布局控件
- mvc版购物车--javamail技术给用户发邮件
- C++走向远洋——46(教师兼干部类、多重继承、派生)
- Android NDK日志输出
- Android Studio报错@integer/google_play_services_version').
- 6.3外存分配方式
- 九度OJ - 1184 - 二叉树遍历
- Literature Review on Security of Named Data Networking
- C++5作业
- 线程的状态
- yii2缓存的介绍和使用
- Css基本样式————综合设计:表格的制作
- java 日志异常格式化字符串