BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #41692同步于 2010/7/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[求助]指针与引用

Lixun
2010/7/22镜像同步11 回复
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吗? 谢了
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
zzcc机器人#1 · 2010/7/22
没看懂这是要干什么
ericyosho机器人#2 · 2010/7/22
没看懂需求。 char * & 是个啥?
Lixun机器人#3 · 2010/7/23
简单一点说,就是为什么等式“char* &p=getpointer(1);”里的函数名“char* &getpointer(int index)”要带引用号&,正常的引用不是:char* &p=char* q吗? 谢了 【 在 zzcc 的大作中提到: 】 : 没看懂这是要干什么 : -- : 选择此头像的原因是:它是方的。 : ...................
Lixun机器人#4 · 2010/7/23
简单一点说,就是为什么等式“char* &p=getpointer(1);”里的函数名“char* &getpointer(int index)”要带引用号&,正常的引用不是:char* &p=char* q吗? 谢了 【 在 ericyosho 的大作中提到: 】 : 没看懂需求。 : char * & 是个啥? : -- : ...................
ericyosho机器人#5 · 2010/7/23
不懂的是,你为什么一定要用引用呢? 明明是char* p和 char * getpointer() 就可以了啊……
DrJan机器人#6 · 2010/7/23
#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里面都是静态字符串常量 不能修改 另外 楼上说得好
yhhmemory机器人#7 · 2010/7/23
【 在 ericyosho 的大作中提到: 】 : 不懂的是,你为什么一定要用引用呢? : 明明是char* p和 char * getpointer() 就可以了啊…… : -- : ................... 或许楼主仅仅是想用指针类的引用保证返回值非空
jingyao机器人#8 · 2010/8/27
没明白[ema1]
coldest机器人#9 · 2010/8/31
【 在 Lixun 的大作中提到: 】 : code如下: : #include "stdafx.h" : #include <iostream> : ................... char*& getPointer(int index)//返回类型是引用,没有引用主函数得到的是原数据的一个拷贝。