返回信息流code如下:
#include "stdafx.h"
#include <iostream>
using namespace std;
char* a[3]={"早上好","下午好","晚上好"};
void travel()
{
for(int i=0;i<3;i++)
cout<<a[i]<<endl;
}
char* &getpointer(int index)
{
return a[index];
}
int main()
{
char* &p=getpointer(1);
p="大家好";
travel();
return 0;
}
问题:为什么“char* &getpointer(int index)”,如果去掉引用号&的话,即变成“char* &getpointer(int index)”,“char* &p=getpointer(1);”就有语法错误呢? 也就是说为什么等号两边都要有引用号&呢?
简单一点说,就是为什么等式“char* &p=getpointer(1);”里的函数名“char* &getpointer(int index)”要带引用号&,正常的引用不是:char* &p=char* q吗?
谢了
这是一条镜像帖。来源:北邮人论坛 / cpp / #41692同步于 2010/7/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]指针与引用
Lixun
2010/7/22镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
简单一点说,就是为什么等式“char* &p=getpointer(1);”里的函数名“char* &getpointer(int index)”要带引用号&,正常的引用不是:char* &p=char* q吗?
谢了
【 在 zzcc 的大作中提到: 】
: 没看懂这是要干什么
: --
: 选择此头像的原因是:它是方的。
: ...................
简单一点说,就是为什么等式“char* &p=getpointer(1);”里的函数名“char* &getpointer(int index)”要带引用号&,正常的引用不是:char* &p=char* q吗?
谢了
【 在 ericyosho 的大作中提到: 】
: 没看懂需求。
: char * & 是个啥?
: --
: ...................
#include <iostream>
using namespace std;
char* a[3]={"早上好","下午好","晚上好"};
void travel()
{
for(int i=0;i<3;i++)
cout<<a[i]<<endl;
}
char* getpointer(int index)
{
return a[index];
}
int main()
{
char* p=getpointer(1);
p="大家好"; //这一句……
travel();
return 0;
}
不知道楼主想做什么 如果你是想把数组a中某下标的字符串改成"大家好"的话
至少 标明的那句应该改成
strcpy(p, "大家好");
而且这样也是不行的 数组a里面都是静态字符串常量
不能修改
另外 楼上说得好
【 在 ericyosho 的大作中提到: 】
: 不懂的是,你为什么一定要用引用呢?
: 明明是char* p和 char * getpointer() 就可以了啊……
: --
: ...................
或许楼主仅仅是想用指针类的引用保证返回值非空
【 在 Lixun 的大作中提到: 】
: code如下:
: #include "stdafx.h"
: #include <iostream>
: ...................
char*& getPointer(int index)//返回类型是引用,没有引用主函数得到的是原数据的一个拷贝。