回答
您声明函数,通过引用,采用10个整数数组是这样的:
void f(int (&arr)[10]);
你这样称呼它
int arr[10];
f(arr);
您可以模板化的功能
template<class T, int N>
void f(T (&arr)[N]);
我传递的字符串是从文件读入的,所以它没有静态的元素大小,无论如何我可以解决这个问题?谢谢 – nullVoid 2012-01-10 23:08:35
@ user1141945:不,没有。 C++中的数组类型必须在编译时指定其大小。动态“数组”实际上是指针,而不是数组。 – 2012-01-10 23:14:55
不是数组通过引用传递吗? 'void f(int(&arr)[10]);'和'void f(int arr [10]);'? – 2012-01-11 01:31:43
如果你正在使用可变大小的数组,你应该使用类似这样的东西:
void someFunc(char* szString, int cbChars)
{
for (int nChar == 0; nChar < cbChars; nChar++)
{ // Do something with the char array
szString[nChar] = 'A'; // Convert string to "AAAAAA..."
{
}
void callerFunc()
{
char szString[255];
// read file...
// put file contents in szString
// and call the above function passing the string 'by reference'
someFunc(szString, 255);
}
也就是说,只传递一个指向数组的指针(它必须是相同的类型)和它的大小(这样你就知道在哪里停止并避免异常)。
您可以为任何数据类型的任何阵列做同样的,有指针上一个很好的教程:http://www.cplusplus.com/doc/tutorial/pointers/
如果你使用的是最新的编译器像最近的海湾合作委员会和Visual Studio(提供C++ 11个容器),你可以用一个std :: array来代替原始数组,并且在阅读时更加清楚。
这里是阿尔钦Tsirunyan答案与标准::数组:
void f(std::array<int,10> & arr);
你这样称呼它
std::array<int,10> arr;
f(arr);
您可以模板化的功能
template<class T, int N>
void f(std::array<T,N> & arr);
- 1. 如何通过引用将结构数组传递给函数?
- 2. 通过引用将结构数组传递给函数
- 3. C++:通过引用将结构数组传递给函数
- 4. 通过引用将字符串数组传递给C函数
- 5. 如何通过ctypes将void *数组传递给C函数?
- 6. 如何将引用传递给函数
- 7. PHP:通过引用传递给函数的数组?
- 8. 如何指示参数通过引用传递给函数
- 9. 如何通过引用传递数组?
- 10. 通过引用将对象参数传递给仿函数
- 11. 如何通过复制和引用将函数传递给函数?
- 12. 如何通过引用传递一个数组中的函数?
- 13. 如何将通用数组传递给构造函数
- 14. 将参数传递给函数引用?
- 15. 通过引用将结构数组传递给函数的问题
- 16. 通过ajax将数组传递给php
- 17. 是否可以通过引用将变量传递给函数?
- 18. 通过引用将矢量对象传递给函数?
- 19. 通过引用传递数组参数
- 20. 如何通过POST将参数传递给Azure函数?
- 21. 如何通过map.event.addListener将参数传递给外部函数
- 22. celerybeat如何通过调度器将参数传递给函数?
- 23. 通过支柱使用ReactJS将函数传递给子组件
- 24. 如果我们将一个数组传递给C中的函数,它是否总是通过引用传递?
- 25. 如何通过一个函数传递参数给函数? (ES6)
- 26. 将对象(通过引用传递)传递给函数不会保持更改
- 27. 将对象引用传递给函数
- 28. 将变量传递给引用函数?
- 29. 将'this'引用传递给Backbone函数
- 30. 将数组传递给函数参数
可能你可能展示的例如,即时通讯相当新的C + +它有助于看到实践中的代码,如果它不是太麻烦?谢谢 – nullVoid 2012-01-10 23:14:38
简单:'void f(std :: array&par)'为一个数组(或者对于动态数组使用'std :: vector '),'void f(std :: string&par)'为一个字符串。但为什么不显示一些关于你想要做什么的代码? –
Grizzly
2012-01-10 23:15:20