国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

C&C++關于數組的定義,引用傳參問題

2019-11-11 01:52:26
字體:
來源:轉載
供稿:網友
C&C++關于數組的定義,引用傳參問題(1)數組的定義        #define maxSize 50        static int length = 10;        正確定義方法:int array[maxSize];         錯誤定義方法:int array[length];            分析:數組的 [ ]中只能放入常量,maxSize是宏定義的常量,而length是定義的靜態變量,所以用后一種方法定義就會抱錯;我們一般定義的時候使用maxSize申請足夠大的空間,但是賦值的時候使用length來賦值,也就是說不是所有申請的maxSize的空間都會在一開始被賦值。之所以這樣,是為了方便以后的數組順序表元素的刪減和增加操作;比如刪除最后一個元素,只需要 ”length--;“就可以了。(2)數組的傳參及引用問題                 如果前面定義好了int型的數組 array[maxSize],int型變量min和max,需要用函數search()來找出數組的最大值和最小值,傳參的情況如下        實參:    正確傳參    search(array,max,min);                      錯誤傳參1    search(array[ ],max,min);                      錯誤傳參2    search(array[maxSize],max,min);                      錯誤傳參3    search(array,&max,&min);                形參:    正確傳參1    void search(int *array,&max,&min){ }                      正確傳參2    void search(int array[ ],&max,&min){ }                      錯誤傳參1    void search(int array[maxSize],max,min){ }                分析:實參的參數本身已經帶有數據類型,可以直接傳參,而形參則必須在傳參的同時生命參數的類型。傳參的時候注意,實參對應位置和形參對應位置的數據類型必須保持一致。                  對于實參,search()函數第一個參數位置應該放入int *類型的變量array,即數組的首地址指針,不能放入array[ ]。而array[maxSize]的類型并不是int *,而是int型的變量array[50] (前面有宏定義的語句 #define maxSize 50),而且array[50]并沒有被賦值,所以用array[50]傳參就會報錯,因此錯誤1 2 是因為第一個參數的類型不對;對于錯誤3,&max和 &min的類型都為int*型的整形指針,而形參需要的是int型的變量,所以類型不對就會抱錯。千萬不能以為&max表示max類型的引用,引用符號&只能對形參使用!引用符號&只能對形參使用!引用符號&只能對形參使用!(重要的事情說三遍),如果對實參使用,則表示取地址,因此實參的類型就會變成指針類型;                 對于形參,第一個位置穿進來的為指針類型,因此可以用指針類型直接定義,為正確傳參1的形式,也可以寫成正確傳參2形式的,但是這種形式(int array[ ])只能對形參使用,即只有形參定義的時候可以省略數組的長度!只有形參定義的時候可以省略數組的長度!只有形參定義的時候可以省略數組的長度!同樣,如果是二維數組,省略形式為(int array[][maxSize]),也即是說第二個下表不能省略,只能省略第一個下標。對于錯誤傳參1,沒有&引用的后果就是被調用函數search( )執行完以后調用函數里面max和min的值不變!這樣基礎的錯誤自然不必多說。示例代碼如下:     /* 線性表課后題3  以不多于3n/2的平均比較次數,找出n個整數的順序表A中的最大值和最小值分析:可以利用if else 語句來減少比較次數;因為最好的情況if成立,else就不用比較所以比較次就可以減少一半     */#include <iostream>using namespace std;#define  maxSize  50static int length = 10;void search(int array[], int &max, int &min){max = min = array[1];for (int i = 1; i <= length;i++){if (array[i] > max)max=array[i];else if (array[i] < min)min = array[i];}}int  main( ){int array[maxSize];for (int i = 1,j=length; i <= length; i++,j--){ cout <<j<<": "; cin >> array[i]; }for (int i = 1; i <= length; i++){ cout << array[i] << "  "; }int max = 0;int min = max;search(array,max,min);cout << "max" << max << "  min " << min << endl;return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宁明县| 沁水县| 南部县| 巴林右旗| 永德县| 通许县| 东安县| 凭祥市| 金寨县| 休宁县| 宁海县| 凤山市| 渝北区| 长治市| 武清区| 贡觉县| 闻喜县| 维西| 宁陵县| 靖州| 扬州市| 扶绥县| 舟曲县| 杨浦区| 德州市| 大新县| 崇阳县| 莫力| 新竹县| 侯马市| 肃宁县| 苏尼特左旗| 民勤县| 三河市| 叙永县| 合肥市| 尼玛县| 柳林县| 宁阳县| 马龙县| 平谷区|