亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++對數組的引用實例分析

2020-01-26 15:23:34
字體:
來源:轉載
供稿:網友

C++中所謂數組引用,即指向數組的引用;
如:

int  a[10] ;  int  (&b)[10] = a ;

如果寫成:

int  a[10] ;int* &b = a ;

系統將會報錯: cannot convert from 'int [10]' to 'int *&'。
  
或許你會說在數組名不就是指向這個數組的一個指針嗎?題中a是int*類型的,b是指向int*的引用,按理應該是正確的啊,為什么會報錯呢?這是因為編譯器對指向數組的引用檢查更加嚴格,需要檢查數組的維數,在這里a被理解成指向10個int數組的指針int [10],對于引用也需要相應的引用類型int (&)[10],即指向10個int數組的指針的引用。

c和c++中有一個“數組降價”問題。如下所示:

#include <iostream>void test( char arr[100] ){   std::cout << sizeof(arr) << std::endl ; // 輸出 4}int main(){  char arr[100] = { 0 };  std::cout << sizeof(arr) << std::endl; // 輸出 100   test( arr );  return 0 ;}

這段代碼的輸出是:
100
4

對于同樣的arr,一個輸出100,另一個輸出4。是因為void test( char arr[100] )中的arr被降價了。
void test( char arr[100] ) 中的arr被降階處理了,
void test( char arr[100] ) 等同于void test( char arr[] ), 也等同于void test( char* const arr ) 如果你原意,它甚至等同于void test( char arr[10] )

編譯器對數組的維數不作檢查。也就是說:

void test( char arr[100] ){   std::cout << sizeof(arr) << std::endl;}

被降成

void test( char* const arr ){   std::cout << sizeof(arr) << std::endl; // 既然是char*,當然輸出4}

這樣,即然不檢查數組的大小,對于需要保證數組大小的程序就會帶來問題。如何解決這個問題呢?可以用c++中的對數組的引用。

看下面這段代碼:

......void test( const char (&arr)[100] ){   std::cout << sizeof(arr) << std::endl ; // 輸出 100}......  char arr[100] = { 0 };  std::cout << sizeof(arr) << std::endl; // 輸出 100   test( arr );......

這樣test就能接受100個char的數組,且只能接受大小為100的char數組。

如果:

char arr[20] = {0};test( arr ) ;

就會報錯

在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)由于這些代碼都是在編譯階段生成的,它需要知道引用數組的大小。所以這樣寫的函數顯然不能用指針變量作為函數的參數,因此不能用這個函數處理動態分配的內存區域,這樣的區域的大小是在運行時確定的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久久久久久久久| 亚洲成人网在线观看| 久久亚洲精品国产亚洲老地址| 日av在线播放中文不卡| 欧美亚洲另类激情另类| 国产成人精品久久二区二区| 欧美激情第三页| 在线观看成人黄色| 国产一区二区三区日韩欧美| 国产v综合v亚洲欧美久久| 亚洲色图国产精品| 91色在线视频| 国产乱人伦真实精品视频| 亚洲最大激情中文字幕| 日韩av综合网| 91超碰caoporn97人人| 国产精品一区二区久久精品| 456亚洲影院| 亚洲第一福利网| 欧美激情一区二区三区高清视频| 色噜噜狠狠狠综合曰曰曰| 中文字幕精品一区久久久久| 日韩一区二区三区xxxx| 国内精品免费午夜毛片| 久久精品久久久久久国产 免费| 欧美人在线观看| 国产免费一区二区三区在线观看| 国产91热爆ts人妖在线| 亚洲图片在区色| 亚洲成人教育av| 亚洲精品国产拍免费91在线| 亚洲精品永久免费精品| 久久久精品在线观看| 日韩av在线一区| 中文字幕在线看视频国产欧美在线看完整| 操日韩av在线电影| 久久精品国产视频| 欧美日韩另类字幕中文| 精品国产老师黑色丝袜高跟鞋| 中文字幕在线看视频国产欧美| 少妇高潮久久久久久潘金莲| 九九热精品视频国产| y97精品国产97久久久久久| 韩曰欧美视频免费观看| 国产91精品网站| 久久精品国产清自在天天线| 日韩电影免费观看中文字幕| 精品无人区太爽高潮在线播放| 日韩电视剧在线观看免费网站| 亚洲男人的天堂在线播放| 欧美在线观看网址综合| 日韩av成人在线观看| 成人精品福利视频| 狠狠色狠色综合曰曰| 7777kkkk成人观看| 亚洲天堂av综合网| 亚洲伊人第一页| 国语自产在线不卡| 欧美一级淫片aaaaaaa视频| 久久亚洲私人国产精品va| 日韩av影院在线观看| 国内精品国产三级国产在线专| 日韩在线欧美在线国产在线| 亚洲精品小视频| 国产suv精品一区二区三区88区| 亚洲第一福利网站| 日韩av大片在线| 5566成人精品视频免费| 亚洲国产精品久久久久久| 欧美黑人视频一区| 久久99久久久久久久噜噜| 日韩电影视频免费| 久久久精品在线| 欧美国产高跟鞋裸体秀xxxhd| 国产精品久久久久77777| 国产精品久久久av| 国外色69视频在线观看| 欧美亚洲国产日韩2020| 亚洲最大福利视频| 日韩一区av在线| 国产亚洲精品综合一区91| 亚洲国产中文字幕久久网| 亚洲欧美制服中文字幕| 欧美精品久久久久| 国产精品老女人精品视频| 国产一区二区色| 热门国产精品亚洲第一区在线| 热99精品只有里视频精品| 精品一区二区三区四区在线| 性欧美xxxx| 成人乱人伦精品视频在线观看| 日本精品久久中文字幕佐佐木| 久久五月天综合| 色播久久人人爽人人爽人人片视av| 亚洲bt天天射| 亚洲自拍偷拍色图| 欧美国产日韩xxxxx| 国产91在线视频| 美女av一区二区三区| 国产精品美女久久久久av超清| 亚洲成人激情在线| 欧美日韩国产中文字幕| 日韩av中文在线| 亚洲区一区二区| 亚洲视频综合网| 日韩一区二区久久久| 欧美激情喷水视频| 欧美成人免费全部观看天天性色| 热久久99这里有精品| 亚洲精品91美女久久久久久久| 高清欧美一区二区三区| 精品无人区太爽高潮在线播放| 中文字幕日韩av综合精品| 51ⅴ精品国产91久久久久久| 97久久精品视频| 欧美日韩亚洲一区二区三区| 亚洲午夜激情免费视频| 久久久精品2019中文字幕神马| 亚洲日本欧美日韩高观看| 国产精品99一区| 国产精品永久免费视频| 欧美精品久久久久久久久| 日韩av在线免费观看| 中文字幕日韩视频| 欧美性高跟鞋xxxxhd| 日韩av电影中文字幕| 国产精品女主播视频| 亚洲第一福利网站| 一区二区日韩精品| 欧美国产日韩在线| 亚洲自拍高清视频网站| 国产免费一区二区三区香蕉精| 日韩亚洲一区二区| 中文字幕亚洲综合久久筱田步美| 97国产suv精品一区二区62| 国产视频久久久久久久| 久久精品久久久久久国产 免费| 国产精品v片在线观看不卡| 亚洲第一网站男人都懂| 欧美激情一级欧美精品| 操日韩av在线电影| 亚洲自拍中文字幕| 色一情一乱一区二区| 日韩av影视综合网| 欧美一级在线亚洲天堂| 综合网中文字幕| 91高清视频免费观看| 51ⅴ精品国产91久久久久久| 色综久久综合桃花网| 久久久久久久影院| 一本大道亚洲视频| 欧美一级淫片videoshd| 粉嫩av一区二区三区免费野| 日韩欧美国产网站| 欧美性xxxx极品高清hd直播| 久久久久久久久久久成人| 色青青草原桃花久久综合| 国产91精品高潮白浆喷水| 色悠悠国产精品| 欧美专区在线观看| 国产在线观看不卡| 日韩经典第一页| 亚洲xxxxx电影| 欧美性一区二区三区|