鱼C论坛

 找回密码
 立即注册
查看: 2932|回复: 19

C语言这个函数的形参是什么意思?

[复制链接]
发表于 2016-1-6 23:33:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 康小泡 于 2016-1-14 13:51 编辑
void f(BTree *&p)
{};
*&p在这里是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-6 23:37:43 | 显示全部楼层
对应的实参要怎么写?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-6 23:38:58 | 显示全部楼层
@小甲鱼 @人造人 @很多人今天考试看到这里,我直接囧了,不会啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-6 23:56:10 | 显示全部楼层

void f(BTree *&p)
{};
这个函数里面如果要使用p这个指针,是用*p还是直接用p?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-6 23:56:52 | 显示全部楼层
求大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-7 16:01:51 | 显示全部楼层
啊,一整天了,都没个人进来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-7 18:06:38 | 显示全部楼层
敢不敢来个人!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-7 20:21:16 | 显示全部楼层
本帖最后由 0xcc 于 2016-1-7 20:28 编辑

参数类型是指向指针的引用。
以int型为例:
void a(int *&n)
{
        printf("%d\n",*n);
}
void main()
{
        int i = 0;
        int *p = &i;
        //int *&pp=p;//可以不用这个变量
        a(p);
        //a(pp);//用pp也行
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-7 21:14:39 | 显示全部楼层
0xcc 发表于 2016-1-7 20:21
参数类型是指向指针的引用。
以int型为例:
void a(int *&n)

VS2012编译不通过~~~是不是VS不能用这种语法?
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(3): error C2143: 语法错误 : 缺少“)”(在“&”的前面)
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(3): error C2143: 语法错误 : 缺少“{”(在“&”的前面)
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(3): error C2059: 语法错误:“&”
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(3): error C2059: 语法错误:“)”
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(12): warning C4013: “a”未定义;假设外部返回 int
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-7 21:20:50 | 显示全部楼层
0xcc 发表于 2016-1-7 20:21
参数类型是指向指针的引用。
以int型为例:
void a(int *&n)

考试的时候我在void a(BTree *&p)函数里面直接用p->data;,看来药丸十分的编程题啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-7 22:18:58 | 显示全部楼层
依据运算符的优先级和结合性来说,相当于这样BTree *(&p) 。把完整的代码贴上来吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-8 02:15:35 | 显示全部楼层
~风介~ 发表于 2016-1-7 22:18
依据运算符的优先级和结合性来说,相当于这样BTree *(&p) 。把完整的代码贴上来吧~

没有完整代码,C语言考试的时候他就给出这个函数的声明,叫我写个二叉树孩子互换的函数,而我直接把*&p当成指针p来用了,即直接p->data,上面那位仁兄说要(*p)->data这样用,看来这道题我要错了。坑爹的考试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-8 10:07:51 | 显示全部楼层
BTree *&是形参p的类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-8 14:07:05 | 显示全部楼层
zengjunjie59 发表于 2016-1-7 21:14
VS2012编译不通过~~~是不是VS不能用这种语法?
1>c:%users\administrator\documents\visual st ...

把测试代码截图来看看~我这里用VS2013,可以编译通过并运行~

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-8 20:16:45 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-8 21:35:26 | 显示全部楼层
本帖最后由 zengjunjie59 于 2016-1-9 12:26 编辑
0xcc 发表于 2016-1-8 14:07
把测试代码截图来看看~我这里用VS2013,可以编译通过并运行~


#include<stdio.h>
void a(int *&n)
{
        printf("%d\n",*n);
}
void main()
{
        int i = 0;
        int *p = &i;
        //int *&pp=p;//可以不用这个变量
        a(p);
        //a(pp);//用pp也行
}
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(3): error C2143: 语法错误 : 缺少“)”(在“&”的前面)
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(3): error C2143: 语法错误 : 缺少“{”(在“&”的前面)
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(3): error C2059: 语法错误:“&”
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(3): error C2059: 语法错误:“)”
1>c:\users\administrator\documents\visual studio 2012\projects\teset\teset\源.c(12): warning C4013: “a”未定义;假设外部返回 int
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========


我的是.c文件,你是不是用了.cpp文件编译?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-10 08:13:29 | 显示全部楼层
引用不是cpp才有的么 c貌似没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-11 10:12:37 | 显示全部楼层
zengjunjie59 发表于 2016-1-8 21:35
#include
void a(int *&n)
{

是的。。。cpp。。o(╯□╰)o
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-11 19:38:40 | 显示全部楼层
指针 &p 是取地址吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-12 17:00:54 | 显示全部楼层
形参在函数定义时占用空间,实参才是执行函数时传入的参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 18:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表