c 程式設計易錯題,總結。

2021-10-12 07:39:42 字數 1947 閱讀 2460

1.函式的引數是 引用

#include using namespace std;

void fn(int& x)

int main()

}

最後輸出的結果是:

11,21

32,53

第二次輸出結果不是22和43,關鍵在於int &x

如果是函式的參數列是int x,結果就會是22和43了。

2.三維的char字元陣列

#include using namespace std;

int main() ;

cout << t[1][2][3];

}

輸出結果是h

t是指兩行三列最長5個字元的字元陣列。因為以\0結束,所以賦值的時候只能輸入4個字元。

3.用一維指標查詢二維陣列的最大元素

#include using namespace std;

void max(int* a, int m, int n)

cout << "max=" << max << ",row=" << row << ",column=" << column << endl;

}int main()

,, };

max(& a[0][0], 3, 4); //第三空

getchar();

return 0;

}

函式max的形參是一維指標,所以傳引數的時候,需要傳&a[0][0],因為陣列名a是二維指標。

此題相當於

#include using namespace std;

int main() ;

//一維指標

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

cout << *(b + 5)<4.建構函式的呼叫次序是基類、物件成員所屬類、自己所屬類的建構函式,析構順序剛好相反。

#include using namespace std;

class a

~a()

};class b

~b()

};class c :public b

c(int i, int j, int k) :a(i), b(j), c(k)

~c()

};void main()

輸出結果:

b=2a=1

c=3c=3

a=1b=2

5.基類的指標指向派生類的物件。

#include using namespace std;

class a

~a()

};class b :public a

~b()

};int main()

輸出結果:

呼叫建構函式a0

呼叫建構函式b5

a=0此時,如果要刪掉p需要用delete,因為基類的析構函式不是虛函式,如果用delete刪掉p,只會呼叫基類的析構函式,不會呼叫派生類的析構函式。

6.虛基類會比非虛基類先呼叫建構函式,最後組合類的建構函式。

#include using namespace std;

class obj1

};class base1

};class base2

};class base3

};class derived : public base1, virtual public base2, public base3

protected:

obj1 obj1;

};void main()

輸出結果:

base2

base1

base3

obj1

c易錯題(一)

刷題也有幾天了,把自己刷題過程的錯題整理出來,以便以後不會再犯同樣的錯誤 1.已知int a 3 4 則下列可以表示a 1 2 元素的值的是 a.a 1 2 b.a 1 2 c.a 0 1 2 d.a 0 1 這道題看著不是很難,差不多可以選出a,但是卻不一定理解下邊的選項為啥錯。下邊我來乙個乙個分...

前端一些易錯題總結

const 可以先宣告後賦值麼?const a 答 不可以,會報錯uncaught syntaxerror missing initializer in const declaration let 可以先使用後宣告麼?console.log a let a 12 答 不可以,uncaught ref...

SQL測驗易錯題

sql 測驗 結果 17 20 您的回答 1.sql 指的是?您的回答 structured query language 2.哪個 sql 語句用於從資料庫中提取資料?您的回答 select 3.哪條 sql 語句用於更新資料庫中的資料?您的回答 update 4.哪條 sql 語句用於刪除資料庫...