返回信息流主函数中调用下面函数,程序跟踪的时候发现实参数值不能回传?我用的指针,为什么出现这情况呢?
Status MakeNode1( struct LNode * p , int e ) //struct LNode *
{
p = ( struct LNode *) malloc( sizeof(struct LNode) ) ;
if( !p ) return ERROR ;
p->data = e ;
return OK ;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #43753同步于 2010/9/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C函数实参数据传回不了,郁闷
hero06
2010/9/11镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Status MakeNode1( struct LNode **p , int e ) //struct LNode *
{
*p = ( struct LNode *) malloc( sizeof(struct LNode) ) ;
if( !*p ) return ERROR ;
*p->data = e ;
return OK ;
}
很典型
【 在 hero06 的大作中提到: 】
: 主函数中调用下面函数,程序跟踪的时候发现实参数值不能回传?我用的指针,为什么出现这情况呢?
: Status MakeNode1( struct LNode * p , int e ) //struct LNode *
: {
: ...................
【 在 hero06 的大作中提到: 】
: 主函数中调用下面函数,程序跟踪的时候发现实参数值不能回传?我用的指针,为什么出现这情况呢?
: Status MakeNode1( struct LNode * p , int e ) //struct LNode *
: {
: ...................
在malloc的时候,指针p的内存地址已经改变了,所以并没有改变之前传入的内存地址的值。
满版都是小学期C++俄罗斯方块
终于看到个C的了。。。
C是传值的
当你调用函数传递(struct LNode * p)时,很显然传递的是指针的值,嗯,而这个值保存在MakeNode1的栈帧中
接着,你修改了这个值,你修改的是栈帧中的值,嗯,而原函数中的指针的值,并没有改变,因为你传递的是 指针的值,函数中修改的是指针的值。
应该使用指针的指针。
【 在 pigg 的大作中提到: 】
: 我不明白,你是要返回data的值吗?可是我怎么觉得即使用指针的指针也是返回的是新分配的空间的data不是传进来的结构里的data呢?
: --
re
学习。。
【 在 zxsword 的大作中提到: 】
: 满版都是小学期C++俄罗斯方块
: 终于看到个C的了。。。
: C是传值的
: ...................