C 面試題,持續跟新中

2021-09-27 03:49:09 字數 2613 閱讀 4605

先算x-=x*x,得x=5-5*5,x=-20;再算x+=x;得出x=40
指標陣列和陣列指標的區別

int *p[4] 和int (*p)[4]的區別

int *p[4]; //定義乙個指標陣列,該陣列中每個元素是乙個指標,每個指標指向**就需要程式中後續再定義了。

int (*p)[4]; //定義乙個陣列指標,該指標指向含4個元素的一維陣列(陣列中每個元素是int型)。

區分int *p[n]; 和int (*p)[n]; 就要看運算子的優先順序了。

int *p[n]; 中,運算子[ ]優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列。

int (*p)[n]; 中( )優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列。

1、int (*p)[4]:定義乙個陣列指標,該指標指向含4個元素的一維陣列(陣列中每個元素是int型);

2、(int (*)[4])m:表示將m強制轉換為大小為4的陣列指標;

1、int (*p)[4]:表示行指標,單位移動量為4個int型別。即p+1,則一次移動4個int型別

2、(int (*)[4])m:表示以陣列指標型別組織m,每4個為乙個陣列

3、這樣一來,m為{{1,2,3,4},{5,6,7,8},{9,0, , }},p指向第一行

4、故p[1][2]即*(*(p+1)+2),表示第二行第三個元素,為7

class a;

class b;

void f(){

a a;

b b;

在函式f中,本地變數a和b的建構函式和析構函式的呼叫順序是:

a 構造,b構造,b析構,a析構

按變數宣告順序構造物件,然**棧

按相反順序出棧,析構物件。

類的私有成員只能被類中的成員函式訪問,任何類以外的函式對它們的方位都是非法的

這句話說法是錯誤的

友元函式可以訪問

運算子等級

括號成員第一; // ()和 .

全體單目第二; // ++ -- +(正) -(負) * &

乘除餘三 // * / %

加減四 // + -

位移五 // >> <<

關係六 // > < >= <=

等於不等排第七 // == !=

位與異或和位或三分天下 *** 十 //& ^ | 邏輯或跟與十二和十一 // || &&

條件高於賦值

逗號運算子最低

選擇程式設計風格良好的條件比較語句

a.假設布林變數名字為fag,它與零值比較的標準if語句如下。

第一種1 if (flag = true)

2 if (flag = false

第二種:

1 if (flag)

2 if(!flag)

b.假設整型變數的名字為 value,它與零值比較的標準i語句如下。

第一種:

1 if (value = 0)

2 if (value 1=0)

第二種1 if (value)

2 if (!value)

c.假設浮點變數的名字為x,它與0.0的比較如下.

第一種:

if(x==0.0)

if(xl=0.0)

第二種:

1 if ((x >=-epsinon )&&(x <= epsinon))

2 if((x <-epsinon)ii(x> epsinon)

其中, epsinon是允許的誤差(精度).

d.指標變數p與0的比較如下.

第一種:

1 if(p=null)

2 if(p!= null)

第二種:

1if(p==0)

2 if(p !=0)

解析

a 的第二種風格較良好.根據布林型別的語義,零值為"假"(記為 false),任何非零值都是"真"(記為true).true的值究竟是什麼並沒有統一的標準例如ⅴisual c++將true定義為1,而ⅴisual basic則將true定義為-1.因此不可將布林變數直接與true、 false進行比較.

b 的第一種風格較良好,第二種風格會讓人誤解 value是布林變數,應該將整型變數用"=="或"!="直接與0比較.

c 的第二種風格較良好.注意:無論是foat還是 double型別的變數,都有精度限制.所以一定要避免將浮點變數用"="或"!="與數字比較,應該設法轉化成">="或"<="形式.

d 的第一種風格較良好,指標變數的零值是"空"(記為null).儘管null的值與0相同,但是兩者意義不同.用p與nul顯式比較,強調p是指標變數.如用p與0比較,容易讓人誤解p是整型變數.

C 面試題目集合(持續跟新)

與我前面寫的c語言高階知識點遙相呼應。這才是c 面試,網上的面試題有些太簡單了。c 面試題目最多集中在物件的記憶體模型,記住了 如果用c c 記憶體都不清楚,還寫個屁的程式!1.c 的虛函式是怎樣實現的?c 的虛函式使用了乙個虛函式表來存放了每乙個虛函式的入口位址,這個虛函式表又使用乙個虛函式指標來...

c 面試面試題 持續更新中。。。

1 下面輸出什麼?public class a public class b a class program 解答 首先4.0 是編譯不過,缺少隱式轉換,這種操作本來就是錯誤的 執行時5.0丟擲異常,無法將a轉換成b 1.0 print a 2.0 print b,3.0 print b 2 將乙個...

C 面試題整理 持續更新

1.自己實現memcpy void mymemcopy void dest,const void src,size t count 2.兩個有序鍊錶合成乙個有序鍊錶 遞迴演算法 nodeptr merge lists nodeptr one head,nodeptr two head else re...