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

2021-10-03 11:28:46 字數 1252 閱讀 4171

對於一維陣列,1[array] == array[1]對於二維陣列,array[i][j] == (i)[array][j]

sizeof和strlen計算的區別是字串最後的那個\0,strlen不計算。

前置++和後置++的區別:後置++是先取i的值做計算,計算後再自加1

a:預編譯,檔案字尾是.i

b:編譯,進行一系列詞法分析、語法分析、語義分析及優化後,生成相應的彙編**檔案,檔案字尾.s

c:彙編,將彙編**轉變成機器可以執行的指令(機器碼檔案)。檔案字尾是.o/.obj

d:鏈結,生成可執行檔案.out

const的第一種位置,指y的指向不能被改變,第二種位置,指y所指的空間的資料不能被改變

%p這個轉換說明符是專門為用來輸出位址的,且是以十六進製制表示的

第一行與第三行作用完全一樣,屬於特殊用法

第二行列印出的是a[1]的位址

第四行列印出的是a[5+1]的位址

main函式中帶了兩個引數,通常用int argc, char *ar**)來表示,這兩個引數也可以不用使用,它們的意義分別是:第乙個表示引數的個數;第二個引數中ar**[0]為自身執行目錄路徑和程式名,ar**[1]指向第乙個引數、ar**[2]指向第二個引數……

&是位運算中的且,運算法則為:1&1 == 1;1&0 == 0; 0&0 == 0

本題涉及到大小端儲存

字串n的實際儲存方式為:

0000

0000

0000

0000

0000

0000

0000

0001

故列印結果是1

#define multiply(x,y) x*y,對應到(1+2,3)表示1+2*3,因為define定義的巨集是一種傻瓜式替換

#表示將兩個字串連線

結構體記憶體空間的計算比較特殊,對於結構體icd來說,乙個該型別變數所佔記憶體為16,而cdi佔了24(3*8)

檔案開啟使用了wb,表示二進位制擦除寫

變數a是以十六進製製長整型儲存的,其儲存的資料通過轉換成字串,剛好對應了linux這個字串

這樣寫是一種經典的錯誤,即在函式中為形參賦予了實際的空間

修改:直接刪去函式中的第一行,直接進行賦值就可以了

西郵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興趣小組面試題總結(2020)

define 識別符號 字串 下面 段的輸出結果是什麼?輸出該結果的原因是?define x a b intmain int argc,char ar 相當於 intmain int argc,char ar 輸出結果為 4在巨集體中,如果巨集引數前加個 那麼在巨集體擴充套件的時候,巨集引數會被擴充...