C 筆試中的一些問題摘抄

2021-06-17 19:18:51 字數 1095 閱讀 4363

1.

結構體求位元組大小問題

struct

s1;struct

s2;cout<<對於s1,因為最大是int,所以前面得char+short+1=4,在int=4,所以s1大小為8。s2char得補成int,short也一樣,所以是3*4=12;

結構體預設的位元組對齊一般滿足三個準則:

1) 結構體變數的首位址能夠被其最寬基本型別成員的大小所整除;

2) 結構體每個成員相對於結構體首位址的偏移量(offset,即每個成員的起始位址)都是成員自身大小的整數倍,如有需要編譯器會在成員之間加上填充位元組(internal adding);

3) 結構體的總大小為結構體最寬基本型別成員大小的整數倍,如有需要編譯器會在最末乙個成員之後加上填充位元組(trailing padding)。

注意:當結構體成員裡面有數組成員時,如int a[10],要看成10個整形變數才參與計算。

2. signed char a =0x80; 

unsigned int b = a; 

unsigned char c = a;

cout<<"a:"<<(int)a《補最高位的

1(若最高位是0則補0),a的值為取反+1,為-32)

cout<<"b:"string f()

string g(string&str)

int i = 0;

constint &i=0;//

可以編譯

//int &i=0;// 不能用非物件去初始化乙個引用。

char a[10]; 

if(!!i)//可以編譯通過

g(f());//可以編譯通過

//a=a+1;//因為a

是乙個位址常量,不能被重新賦值

//g("abc");//

因為「abc」

是乙個const char*

型別,而

g函式引數還是非

const的

4.unsigned

int a =0x1234; 

char b = *((char*)&a);

cout<<(int)b;//輸出52,若不新增(int)則輸出4,ascaii碼值。

C 一些問題

1 if else語句和switch case語句的效率分析對比 switch效率高。switch的效率與分支數無關,當只有分支比較少的時候,if效率比switch高,因為switch有跳轉表。分支比較多,那當然是switch 根據大量的實際程式測試 不考慮不同的編譯器優化程度差異,假設都是最好的優...

網上摘抄一些C 筆試題目

c 筆試題 1.多型類中的虛函式表是compile time,還是run time時建立的?答案 虛函式表是在編譯期就建立了,各個虛函式這時被組織成了乙個虛函式的入口位址的陣列.而物件的隱藏成員 虛函式表指標是在執行期 也就是建構函式被呼叫時進行初始化的,這是實現多型的關鍵.3.完成字串拷貝可以使用...

c 一些問題總結

這裡總結一些c 常遇到的問題 不同型別之間的轉換。1 string const char std string s 1 lsw const char cs 1 s 1.c str printf const char cs is s n cs 1 2 const char string const c...