8 31牛客網錯題集

2021-10-24 03:45:51 字數 1638 閱讀 8203

已知:int m=10;

int &x=m正確

int &y=10

.int &z;

float &t=&m;

解析

引用就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號 &引用名=目標變數名;

舉個例子:

int a;

int &ra=a; //定義引用ra,它是變數a的引用,即別名

說明:(1)&在此不是求位址運算,而是起標識作用。

(2)型別識別符號是指目標變數的型別。

(3)宣告引用時,必須同時對其進行初始化。

(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。

ra=1; 等價於 a=1;

(5)宣告乙個引用,不是新定義了乙個變數,它只表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求位址,就是對目標變數求位址。&ra與&a相等。

(6)不能建立陣列的引用。因為陣列是乙個由若干個元素所組成的集合,所以無法建立乙個陣列的別名。

引用的主要作用:

(1)在引用的使用中,單純給某個變數取個別名是毫無意義的,引用的目的主要用於在函式引數傳遞中,解決大塊資料或物件的傳遞效率和空間不如意的問題。

(2)用引用傳遞函式的引數,能保證引數傳遞中不產生副本,提高傳遞的效率,且通過const的使用,保證了引用傳遞的安全性。

(3)引用與指標的區別是,指標通過某個指標變數指向乙個物件後,對它所指向的變數間接操作。程式中使用指標,程式的可讀性差;而引用本身就是目標變數的別名,對引用的操作就是對目標變數的操作。

(4)使用引用的時機。流操作符《和》、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用。

int * p[n];

int (* )p[n];

int * p();

int (*)p();

int *p[n];—–指標陣列,每個元素均為指向整型資料的指標

int (*)p[n];—p為指向一維陣列的指標,這個一維陣列有n個整型資料

int *p();——函式帶回指標,指標指向返回的值

int (*)p();—-p為指向函式的指標正確

解析

int *p[4]; //表示指標陣列,有四個元素,每個元素都是整型指標。

int (*p)[4]; //表示行指標,所指物件一行有四個元素。

int *p(void); //表示函式,此函式無參,返回整型指標。

int(*p)(void) ;//表示函式指標,可以指向無參,且返回值為整型指標的函式。

出錯處理

詞法分析

目標**生成

**管理正確

解析

①典型的編譯程式通常包括:詞法分析、語法分析、語義分析、中間**生成、中間**優化、目標**生成、**管理;

②編譯的每個階段所需要的資訊多數從**中讀取,產生的中間結果都記錄在相應的**中,可以說整個編譯過程就是造表、查表的過程

牛客網 鍊錶 錯題集

2019年6月23日 單向鍊錶佇列 使用鍊錶作為底層資料結構實現的佇列 適用於壓縮儲存稀疏矩陣的兩種儲存結構是 三元組表的結點儲存了行row 列col 值value三種資訊,是主要用來儲存稀疏矩陣的一種資料結構。十字鍊錶將行單鏈表和列單鏈表結合起來儲存稀疏矩陣。鄰接矩陣空間複雜度達o n2 不適於儲...

牛客網錯題錦集day3

1.css 樣式,通過設定左和右 auto 可以把塊元素調整到中間位置。2.下面哪條宣告能固定背景 a a.background attachment fixed b.background attachment scroll c.background origin initial d.backgro...

牛客網 錯題整理(4)

錯題集 1.沒用引數的兩個函式是不能過載的.說法是否正確?答案 錯誤 解析 const 可以構成過載 2.math.round 11.5 等於 答案 12 解析 首先要注意的是它的返回值型別是long,如果 math.round 11.5f 那它的返回值型別就是int,這一點可以參考api 其次它返...