1. 程式人生 > >C++中陣列的引用作為函式引數

C++中陣列的引用作為函式引數

#include <iostream>
using namespace std;

/*
void fun(char (&buff)[11])//括號裡必須有11才不報錯
{
	cout<< buff;
}
*/

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

int main(int argc, char *argv[])
{
	char buff[] = "helloworld";
	
	fun(buff);
	
	return 0;
}

/*
void fun(char (&buff)[11])跟void fun(char *&buff);完全是兩回事,
c++的陣列型別是帶有長度資訊的,引用傳遞時如果指明是陣列則必須指定長度,char[]這種是不完全型別,在沒有別的條件來確定長度的情況下是不能當做一個型別來使用的
如果lz想接收任意長度的陣列,應當使用模板函式

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