| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 419 人关注过本帖
标题:C语言指针问题
只看楼主 加入收藏
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
C语言指针问题
程序代码:
#include <iostream>
using namespace std;
void get(int *p)
{
    p=new int;
}
int main()
{
    int *p=NULL;
    get(p);
    *p=4;
   cout<<*p<<endl;
    return 0;
}

编译和连接都没问题,运行就会出错,求大神指教指针原理。不要增加和减少代码,怎样改正?
搜索更多相关主题的帖子: C语言 
2013-01-24 22:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
你真以为传参指针,在函数里面赋值,那指针就返回主函数了呀?

授人以渔,不授人以鱼。
2013-01-24 23:15
鬼泣小狼
Rank: 1
等 级:新手上路
帖 子:3
专家分:8
注 册:2013-1-24
收藏
得分:5 
我认为是int *p=NULL;不应该这样写,这句语句是否是想对指针p进行初始化的意思?如果是那么这句语句是不对的。NULL表示以0号为地址的单元,而这块地址单元操作系统规定是不能读也不能写的。  p=new int;这句语句是想修改这块单元的内容。我也是初学者,一些理解而已,希望高手补充一下,还有就是想问一下 cout<<*p<<endl;是干什么用的,老师没教

[ 本帖最后由 鬼泣小狼 于 2013-1-24 23:23 编辑 ]
2013-01-24 23:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
2楼说得很对
int *p=NULL;
get(p);
其实就相当于 get( NULL ),只是将p的值传了进去了,无论get函数内部怎么操作,都没有修改p本身。
所以在C/C++中,应该这样:
void get(int** pp)
{
    *pp = new int;
}
同时,get(p) 改为 get( &p );

在C++还可以使用“引用”:
void get( int*& p )
{
    p = new int;
}
而 get(p) 还保持原样
2013-01-25 08:57
XQwindow
Rank: 2
等 级:论坛游民
帖 子:121
专家分:64
注 册:2013-1-1
收藏
得分:0 
这是C++吧。iostream

我不知道我能否当程序员,但我依然热爱编程!
2013-01-25 09:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
昨晚重温了《叶问前传》,大师兄说梁璧的功夫非正宗,不能学不能用。

授人以渔,不授人以鱼。
2013-01-25 10:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
直接的编码,这个功能本来就不需要用函数,或者是返回动态分配的指针(在上层释放),而不是这样利用参数返回。函数原型的设计就错误,怎么改都别扭。

授人以渔,不授人以鱼。
2013-01-25 10:42
LLC_HJW
Rank: 2
等 级:论坛游民
帖 子:58
专家分:39
注 册:2013-1-11
收藏
得分:0 
还是用纯C语言编写代码吧
2013-01-25 12:48
lsh106665347
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-6
收藏
得分:0 
多谢大神们的指教
2013-01-25 17:40
快速回复:C语言指针问题
数据加载中...
 
   



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

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