使用指针要小心
来源:互联网 发布:公司记账软件免费版 编辑:程序博客网 时间:2024/04/27 22:50
使用指针一定要小心,下面记录了自己犯的一个错误。
#include <iostream>using namespace std;void changePoint1(int *&p);void changePoint2(int **p);void main(){int a = 10;cout<<"变量a的地址: "<<&a<<endl;cout<<endl;int *zyP = &a;cout<<"指针zyP的地址: "<<&zyP<<endl;cout<<"指针zyP的内容: "<<zyP<<endl;cout<<"指针zyP所指对象: "<<*zyP<<endl;cout<<endl;cout<<"使用函数changePoint1(int *&p)"<<endl;changePoint1(zyP);cout<<"指针zyP的地址: "<<&zyP<<endl;cout<<"指针zyP的内容: "<<zyP<<endl;cout<<"指针zyP所指对象: "<<*zyP<<endl;cout<<"指针zyP所指对象: "<<*zyP<<endl;cout<<endl;cout<<endl;cout<<"---------------------------"<<endl;int *yyP = &a;cout<<"指针yyP的地址: "<<&yyP<<endl;cout<<"指针yyP的内容: "<<yyP<<endl;cout<<"指针yyP所指对象: "<<*yyP<<endl;cout<<endl;cout<<"使用函数changePoint2(int **p)"<<endl;changePoint2(&yyP);cout<<"指针P的地址: "<<&yyP<<endl;cout<<"指针P的内容: "<<yyP<<endl;cout<<"指针yyP所指对象: "<<*yyP<<endl;cout<<"指针yyP所指对象: "<<*yyP<<endl;}void changePoint1(int *&p){int i = 20;int j = 30;cout<<"xxxxxxxxxx "<<&i<<endl;cout<<"xxxxxxxxxx "<<&j<<endl;p = &i;}void changePoint2(int **p){int i = 20;int j = 30;cout<<"xxxxxxxxxx "<<&i<<endl;cout<<"xxxxxxxxxx "<<&j<<endl;*p = &j;}
一定不要用将局部变量的地址赋给全局指针
函数changePoint1(int *&p)和changePoint2(int **p)中的局部变量int i,j的地址是一样的(vs2010编译),所以造成结果的混乱,修改指针的一定要小心。
0 0
- 使用指针要小心
- 小心使用的指针变量
- 对包含指针的容器使用remove要特别小心
- c语言指针使用小心得
- strlen使用要小心
- 使用memset要小心
- C/C++ 使用delete删除指针需小心 “野指针”
- 使用hibernate要小心喔
- base元素要小心使用
- 使用thrift要小心超时
- memset和指针new一起使用时请小心
- 3.2.小心野指针
- 小心指针的备份
- C++指针,小心晕针
- effective stl 第33条:对包含指针的容器使用remove这一类算法时要特别小心
- 使用CComPtr也要小心了
- 使用Session.Abandon()方法要小心
- 使用Session.Abandon()的时候要小心
- Linux系统下MySQL安装总结
- SQL标示种子列的插入行为
- linux改变mysql安装路径
- java多线程学习(一)
- 每个程序员都应该知道的8个Linux命令
- 使用指针要小心
- 删除容器中元素时的迭代器失效问题
- 三星放大招 欲“逼死”苹果
- centos 英文系统中文显示
- Java程序中的有关问题 short s1=1; s1+=1;为什么编译不出错
- R学习笔记——wordcloud包制作词云图
- Android中的SQLite数据库
- Anagrams
- VB.NET 使用 OleDb 操作 Access 数据库(来自 MSDN)