對於一維陣列,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在巨集體中,如果巨集引數前加個 那麼在巨集體擴充套件的時候,巨集引數會被擴充...