日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++中如何定义某个数组的引用?

發布時間:2024/9/20 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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++中如何定义某个数组的引用?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。