西郵Linux興趣小組面試題總結(2020)

2021-10-19 18:23:52 字數 3548 閱讀 4944

#define 識別符號 字串

下面**段的輸出結果是什麼?輸出該結果的原因是?

#define x a + b

intmain

(int argc,

char

*ar**)

**相當於

intmain

(int argc,

char

*ar**)

輸出結果為: 4

在巨集體中,如果巨集引數前加個#,那麼在巨集體擴充套件的時候,巨集引數會被擴充套件成字串的形式。

分析以下**段,解釋輸出的結果。

#define year 2018

#define levelone(x) "xiyoulinux "#x"\n"

#define leveltwo(x) levelone(x)

#define multiply(x,y) x*y

intmain

(int argc,

char

*ar**)

**相當於:

#define year 2018

#define levelone(x) "xiyoulinux "#x"\n"

#define leveltwo(x) levelone(x)

#define multiply(x,y) x*y

intmain

(int argc,

char

*ar**)

輸出結果為:

7xiyoulinux year

xiyoulinux 2018

請解釋一下這行**做了什麼?

puts((char*)(int const)

);該**輸出內容為: xiyoulinuxgroup2021

記憶體位址

0x4000 8000(低位址)

0x4000 8001

0x4000 8002

0x4000 8003(高位址)

大端模式

0x12(高位元組)

0x34

0x56

0x78(低位元組)

小端模式

0x78(低位元組)

0x56

0x34

0x12(高位元組)

明顯可以看出規律,即大端「高低低高」,小端「高高低低」:

小端模式,是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中

printf和scanf是最常用的輸入輸出函式,但你可能會不知道它們的返回值

下面**的執行輸出結果是什麼,並說說你的理解。

intmain

(int argc,

char

*ar**)

輸出結果為: xi you linux group 2021

位移問題有很多題裡會遇到,位移分為算術位移和邏輯位移,在我的另一篇部落格裡寫了算術位移和邏輯位移

static變數也稱作靜態變數,靜態變數和非靜態變數的區別是:靜態變數當且僅當在類初次載入時會被初始化。而非靜態變數可以多次修改他的值。

這段**的輸出結果是什麼?為什麼會出現這樣的結果?

int i =2;

void

func()

else

}int

main

(int argc,

char

*ar**)

輸出結果為:

m =1

, n =

1m =

2, n =

1

有如下**段所示的函式?,當我們執行該函式時,會產生什麼樣的輸出結

果?在同一程式中多次執行該函式,輸出結果是否一致?

voidf(

) 輸出結果為:1

,1

參考所給**,簡要地談一談你對 static 關鍵字的理解。

static

int a =

2018

;static

void

func

(void

)int

main

(int argc,

char

*ar**)

輸出結果為:

a =2018

, b =

1a =

2019

, b =

2a =

2020

, b =

3

char y=

"xiyoulinuxgroup"

,x="2018"

;char

*const p1=y;

const

char

*p2=y;

p1=x;

//是錯的

p2=x;

*p1=

'x';

*p2=

'x';

//是錯的

結構體中資料成員對齊規則:

​ 1. 結構體(struct)或聯合(union) 的資料成員,第乙個資料成員放在offset為0的地方,以後每個資料成員儲存的起始位置要從該成員的大小或該成員的子成員大小(只要該成員有子成員)的整數倍開始 。

​ 2.結構體作為成員:如果乙個結構體裡有某些結構體成員,則結構體成員要從內部最大元素大小的整數倍位址開始儲存

​ 3.收尾工作:結構體的總大小,也就是sizeof的結果,必須是內部最大成員的整數倍,不足要補齊。

struct icd

;struct cdi

;int

main()

輸出結果: 16

24

陣列和指標相似

下面**的執行輸出結果是什麼,並說說你的理解。

intmain

(int argc,

char

*ar**)

&a 表示了整個陣列的首位址

&a[0

] 表示了陣列第一行的首位址

&a[0][

0] 表示了陣列第乙個元素的位址

&a +

&a[0]+

1 表示了陣列第二行的首位址即&a[1]

&a[0][

0]+1 表示了陣列第二個元素的位址即&a[0]

[1]輸出結果為:

&a=0x7ffe377318a0

&a[0]=

0x7ffe377318a0

&a[0][

0]=0x7ffe377318a0

&a+1

=0x7ffe377318b0

&a[0]+

1=0x7ffe377318a8

&a[0][

0]+1

=0x7ffe377318a4

西郵Linux興趣小組2017納新試題總結

1.分析下列程式的輸出 int main int argc,char ar sizeof t 計算int型別大小,輸出為4 ab c佔4個位元組,n,012,2,還有結束符佔1個位元組,xal佔2個位元組 2.下面 會輸出什麼?int main int argc,char ar printf函式的執...

西郵Linux興趣小組2017納新面試題總結

main函式中帶了兩個引數,通常用int argc,char ar 來表示,這兩個引數也可以不用使用,它們的意義分別是 第乙個表示引數的個數 第二個引數中ar 0 為自身執行目錄路徑和程式名,ar 1 指向第乙個引數 ar 2 指向第二個引數 sizeof是乙個運算子,它的意義是計算出括號內內容所佔...

西郵Linux興趣小組2018納新面試題總結

對於一維陣列,1 array array 1 對於二維陣列,array i j i array j sizeof和strlen計算的區別是字串最後的那個 0,strlen不計算。前置 和後置 的區別 後置 是先取i的值做計算,計算後再自加1 a 預編譯,檔案字尾是.i b 編譯,進行一系列詞法分析 ...