| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8248 人关注过本帖
标题:一函数的形参是SqList * &L,是神马意思?求解释。和SqList * L有什么不同? ...
只看楼主 加入收藏
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
回复 10楼 漠漠小一
发现,L=((Sqlist * &L)malloc(sizeof(Sqlist)));不能这样写
又想想,既然是引用,类型还是Sqlist *类型,那L=((Sqlist *)malloc(sizeof(Sqlist)));就行,还只有这样能行
#include<stdio.h>
#include<malloc.h>
struct Sqlist
{
    int length;
};
int fun(Sqlist * &b)
{
        b=((Sqlist *)malloc(sizeof(Sqlist)));
        b->length=9;
        printf("&b=%p,b->length=%d\n",&b,b->length);
        return 0;
}
int main()
{
    Sqlist s;
        s.length=5;
    Sqlist *p=&s;
        fun(p);
        printf("&p=%p,p=%d\n",&p,p->length);
        return 0;
}

小小战士,战士中的战斗机!
2012-12-08 14:33
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:0 
真佩服楼主,主动吸收理解错误的信息,自动过滤掉正确的信息

既然都看到数据结构,那起码C语言应该熟悉一点,最最起码不过出现低级的语法错误吧。

我在5楼说 你不会抄都抄错吧。。。你确定 L=(SqList * &L)malloc(sizeof(SqList));你没有抄错?确定? 还是说你根本没理解意思。

形参和实参的关系 你也没有理解。

L是个指针,在线性表初始化这个操作中,要对L进行修改赋值,
形参如果是 SqList*L   L在调用前调用后都不会改变,因为是把L拷贝一份
给了函数,是传“值”, 在函数内对L进行的任何修改,都不会影响到L的“本体”
,所以为了达到目的,需要用到 &。
形参是 SqList * &L ,这是引用调用,他传递给函数的,就不是拷贝一份L给函数了,而是将L的地址传给了函数,在函数内对L的任何操作,都是对真正的唯一的L在操作。

其他操作,比如查询,搜索,等等,因为不牵扯到对L的修改,所以可以直接用SqList*L 。
2012-12-08 14:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
回复 12楼 信箱有效
好像发粪见效了哩

授人以渔,不授人以鱼。
2012-12-08 14:53
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:0 
以下是引用TonyDeng在2012-12-8 14:53:23的发言:

好像发粪见效了哩
我这样的天才少年,智慧儿童,学什么会什么。天冷了 正在学打毛衣呢。
2012-12-08 15:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用信箱有效在2012-12-8 15:17:25的发言:

我这样的天才少年,智慧儿童,学什么会什么。天冷了 正在学打毛衣呢。

没学十字绣?

授人以渔,不授人以鱼。
2012-12-08 15:18
炎黄宇宙
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:104
注 册:2012-11-12
收藏
得分:3 
以下是引用azzbcc在2012-12-8 02:01:08的发言:

(SqList * )(&L)前面是说L是一个指向结构体的指针类型。‘&’在此应该是C++的引用,是函数操作可以改变L。不过理论上只传指针进去就应该可以了吧。。。

你试着把&干掉试试,看结果如何。
2012-12-08 16:48
漠漠小一
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-12-7
收藏
得分:0 
回复 12楼 信箱有效
我抄错了,默泪中......感谢大牛的解释,顿悟。
2012-12-08 17:10
俺爸世界
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-4-6
收藏
得分:0 
把*去掉才对
2013-06-09 10:30
快速回复:一函数的形参是SqList * &L,是神马意思?求解释。和SqList * L有什么不 ...
数据加载中...
 
   



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

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