| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 579 人关注过本帖
标题:[原创]一个指针的小问题
只看楼主 加入收藏
wcsavior
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-3-18
收藏
 问题点数:0 回复次数:3 
[原创]一个指针的小问题
int foobar( int *pi ) {
*pi = 1024;
return *pi;
}
int main() {
int *pi2 = 0;
int ival = foobar( pi2 );
return 0;
}
错在哪?
搜索更多相关主题的帖子: 1024 foobar return 
2006-03-18 19:42
okey
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-2-12
收藏
得分:0 

原因:内存访问违反C++语法,也叫内存访问违规。

int foobar( int *pi ) {
*pi = 1024; //2`错误就在这里了,*pi=1024,想当于往内存地址为0x00000000的内存块赋值,
return *pi; 而内存地址0x00000000 -- 0x0000000F 是不能使用的。
}
int main() {
int *pi2 = 0; //1`相当于int *pi2;pi2=NULL;
int ival = foobar( pi2 );
return 0;
}


当然,你喜欢这样调用的话,也没办法了,各有所好吧,形参用一个指向指钍的指针变量,就可以改变实参的指针的变量的值了.......

int foobar( int **pi )
{
*pi = new int;
**pi=1024;
return (**pi);
}

int main()
{
int *pi2 = 0;
int ival = foobar( &pi2 );
return 0;
}

偶也是只菜鸟,请多指教呀.....


when i first saw you , i saw love . and the first time you touch me , i feel love.〆〆
2006-03-18 23:12
luoxian_2003
Rank: 1
等 级:新手上路
威 望:2
帖 子:163
专家分:0
注 册:2006-2-22
收藏
得分:0 

楼上的比较专业阿,说得不错啊,受教了


天地有正气,凛烈万古存。
2006-03-19 01:20
wcsavior
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-3-18
收藏
得分:0 
谢谢拉

2006-03-19 22:32
快速回复:[原创]一个指针的小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030661 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved