C++ 数组的引用做函数参数怎么写?
本帖最后由 syrchina 于 2013-01-31 18:33:39 编辑
#include <iostream>
using namespace std;
void fun(char (&buff)[11])//括号里必须有11才不报错
{
cout<< buff;
}
int main(int argc, char *argv[])
{
char buff[] = "helloworld";
fun(buff);
return 0;
}
#include <iostream>
using namespace std;
void fun(char (&buff)[])//这样写报错,why? 写成void fun(char &buff[])也报错
{
cout<< buff;
}
int main(int argc, char *argv[])
{
char buff[] = "helloworld";
fun(buff);
return 0;
}
C++ 数组的引用做函数参数怎么写?
[解决办法]
void fun(char (&buff)[11])跟void fun(char *&buff);完全是两回事,lz不要听他的
c++的数组类型是带有长度信息的,引用传递时如果指明是数组则必须指定长度,char[]这种是不完全类型,在没有别的条件来确定长度的情况下是不能当做一个类型来使用的
如果lz想接收任意长度的数组,应当使用模板函数
template<size_t size>
void fun(char (&buff)[size])
{
cout<< buff;
}