C++中如何定义某个数组的引用?
生活随笔
收集整理的這篇文章主要介紹了
C++中如何定义某个数组的引用?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我要定義一個函數,以某個數組為參數。函數中要計算這個數組的長度。
如果是在外面,可以直接用諸如sizeof a/sizeof a[0]這樣的方法得到,但是我把a作為參數傳到函數中后,這個形參就是指針類型了,用sizeof相除的辦法得到的始終是1,所以我想是不是可以傳a的引用進去。我不太希望再加個數組長度作為參數。
?
?
解決:
?
#include<iostream> using namespace std;int array_length(int (&a)[5]) {return sizeof(a)/sizeof(a[0]); } int main() {int array[5]={0}; //定義5個元素的int型數組cout<<array_length(array)<<endl;return 0; } 這有一篇文章專門講這個,你看看: http://blog.csdn.net/piratejk/archive/2008/10/28/3162064.aspx 在此謝過piratejk! 其實你說的功能在這個鏈接里就說到了,是你自己不去看: 在C++ 中,對數組的引用可以直接傳遞數組名,因為數組的大小的信息已在形參里提供了。但是這樣一來我們只能固定數組的大小來用這個函數了。用模板加數組的引用可以解決這個問題,看如下代碼: template <int sz> void test(char (&arr)[sz]) {for ( int i = 0; i < sz; i++ )......}char a[2] = { 0 }, b[15] = { 0 };test(a);??//oktest(b);??//ok......這樣解決了數組長度可變的問題,但也引入了新的問題: (1)當有多個不同的test調用時,會產生多份test代碼。而傳統的函數調用只有一份代,也調用的次數無關。 (2)由于這些代碼都是在編譯階段生成的,它需要知道引用數組的大小。所以這樣寫的函數顯然不能用指針變量作為函數的參數,因此不能用這個函數處理動態分配的內存區域,這樣的區域的大小是在運行時確定的。本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/piratejk/archive/2008/10/28/3162064.aspx看來你是個急躁之人,不適合用C++,你知道strlen是如何計算字符串長度的嗎?因為字符串總是以0結尾,所以strlen才能計算出字符串的長度,轉載于:https://www.cnblogs.com/Podevor/archive/2011/07/04/2788162.html
總結
以上是生活随笔為你收集整理的C++中如何定义某个数组的引用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农行网捷贷申请条件
- 下一篇: 什么是人保财险个人贷款抵押房屋综合保险