首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 数组的引用做函数参数如何写

2013-02-27 
C++ 数组的引用做函数参数怎么写?本帖最后由 syrchina 于 2013-01-31 18:33:39 编辑#include iostreamus

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 (&amp;buff)[11])//括号里必须有11才不报错
{
    cout<< buff;
}
在你这个函数里面用到的是一维数组指针的引用,这样子必须指明数组的长度。其实数组名在作为函数参数传递的时候被弱化为指针了,所以你完全可以在参数传递的时候把数组名看作是指针来传递,比如:
void fun(char *&amp;buff……
void fun(char (&buff)[11])跟void fun(char *&buff);完全是两回事,lz不要听他的
c++的数组类型是带有长度信息的,引用传递时如果指明是数组则必须指定长度,char[]这种是不完全类型,在没有别的条件来确定长度的情况下是不能当做一个类型来使用的
如果lz想接收任意长度的数组,应当使用模板函数

template<size_t size>
void fun(char (&buff)[size])
{
    cout<< buff;
}

热点排行