函数引用?

iphonec 2010-10-27 07:57:47
书上的例子:引用函数?
数据可以引用,函数还可以引用?
看不明白

#include<iostream.h>
int& f1(int n,int* p)
int& m=p[n];
return m;
}
void main()
{
int s[]={1,2,3,4,5,6},i;
f1(3,s)=10; //这边s的数据类型和int* p的类型不一样,怎么引用?
for(i=0;i<6;i++)
cout<<s[i]<<" ";
cout<<endl;
}
...全文
144 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrankHB1989 2010-10-28
  • 打赏
  • 举报
回复
漏了...
“当函数返回值是非const引用时,可以作为左值”
↑明显有问题。除了新出来的右值引用,哪个C++引用不只能引用左值?
PS.“作为左值”的情况也是有限的,很多情况都lvalue-to-rvalue conversion变成右值了。
FrankHB1989 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wyget 的回复:]

s是数组名,记住,数组名很多时候会悄悄转化为指针

当函数返回值是非const引用时,可以作为左值
[/Quote]
数组名是名称不是对象(连实体都不是),哪来的“转化为指针”……
数组名指称的数组倒是确实经常array-to-pointer conversion而变成指针。
wyget 2010-10-27
  • 打赏
  • 举报
回复
s是数组名,记住,数组名很多时候会悄悄转化为指针

当函数返回值是非const引用时,可以作为左值
FrankHB1989 2010-10-27
  • 打赏
  • 举报
回复
这里确实只是返回一个引用而已。
但函数引用(reference-to-function) 也是有的,语法类似函数指针,把*替换成&:
像int (&f)(int n, int* p) = f1;之类。
不过有成员函数指针,没有成员函数引用……
purewqk 2010-10-27
  • 打赏
  • 举报
回复
学习了~~~~~~
iphonec 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 goonyangxiaofang 的回复:using namespace std 这句好像没用啊]
返回的是引用

f1(3,s)=10;

即是 s[3] = 10;


C/C++ code

#include<iostream>
using namespace std;

int& f1(int n,int* p)
{
int& m=p[n];
return m;
}
int main()
{
int s[]={……
[/Quote]
lyqf365 2010-10-27
  • 打赏
  • 举报
回复
学习了,原来还可以这么用,第一次见到
#include<iostream>
using namespace std;
int& f1(int n,int* p){
int& m=p[n];
return m;
}
int main()
{
int s[]={1,2,3,4,5,6},i;
f1(3,s)=10; //f1(3,s)就是s[3]嘛
for(i=0;i<6;i++)
cout<<s[i]<<" ";
cout<<endl;
}
GoonYangXiaofang 2010-10-27
  • 打赏
  • 举报
回复
返回的是引用

f1(3,s)=10;

即是 s[3] = 10;


#include<iostream>
using namespace std;

int& f1(int n,int* p)
{
int& m=p[n];
return m;
}
int main()
{
int s[]={1,2,3,4,5,6},i;
f1(3,s)=10;
for(i=0;i<6;i++)
cout<<s[i]<<" ";
cout<<endl;
}

無_1024 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 graymole2010 的回复:]
不是函数引用,是返回值是引用。
int& f1(int n,int* p)表示返回值是int &。
[/Quote]
这个地方的f1不能作为左值 只能作为右值
maoxing63570 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 iphonec 的回复:]
哦,这样子啊
那这个 f1(3,s)=10; //这边s的数据类型和int* p的类型不一样,怎么引用?
[/Quote]
你到底知不知道什么是引用,什么是指针
int & f()//返回引用
int * f()//返回指针
healer_kx 2010-10-27
  • 打赏
  • 举报
回复
不过这样做的意义似乎不是很大,完全取决于你返回什么对象的引用了。
iphonec 2010-10-27
  • 打赏
  • 举报
回复
哦,这样子啊
那这个 f1(3,s)=10; //这边s的数据类型和int* p的类型不一样,怎么引用?
GrayMole2010 2010-10-27
  • 打赏
  • 举报
回复
不是函数引用,是返回值是引用。
int& f1(int n,int* p)表示返回值是int &。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧