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

2021-10-02 11:33:45 字數 2909 閱讀 5004

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函式的執行機制為在棧上申請儲存空間, 規則為先進後出, 因此printf()表現為引數從右向左運算, 所以c=60,b=1200;

先輸出a+b+c的值1270,在輸出字元長度4;

3.下面**使用正確嗎?若正確,請說明**的作用;若不正確,請指出錯誤並修改。

void

get_str

(char

*ptr)

intmain

(int argc,

char

*ar**)

主函式str沒有變化,因為被調函式沒有返回值;應該給被調函式加 return  ptr;
4.請解釋下面**的輸出結果。

size_t q

(size_t b)

size_t (*p

(char

*str)

)(size_t a)

intmain

(int argc,

char

*ar**)

size_t (*p(char *str))(size_t a)是乙個返回值為函式指標的函式,()的優先順序比*高,所以p先與()結合,p(char *str)是含有字元型指標引數的函式,返回值是size_t (*)(size_t a),也就是乙個指向函式的指標
5.static全域性變數與普通的全域性變數有什麼區別?static區域性變數與普通區域性變數有什麼區別?static函式與普通函式有什麼區別?

1.static構成了靜態的全域性變數,靜態全域性變數則限制了其作用域, 即只在定義該變數的原始檔內有效

3.static函式與普通函式作用域不同

6.下列程式分別輸出的是陣列中的第幾個0?

int

main()

;for

(int i=

0;i<=

2;i++

)return0;

}

分別是第1個,第4個,第7個;
7.const關鍵字的作用是什麼?下面的這幾種定義有區別嗎?

const

char

*p;char

const

*p;char

*const p;

const

char

*const p;

const char *p; 不能通過這個指標改變變數的值,但是可以通過其他引用來改變變數的值

char const *p;常量指標的值不能改變,但這不意味著指標本身不能改變,常量指標可以指向其他的位址,

char *const p;指標常量指向的位址不能改變,但是位址中儲存的數值是可以改變的,可以通過其他指向該位址的指標來修改

const char *const p;指向常量的常指標:指標指向的位置不能改變且也不能通過這個指標改變變數的值

8.說說#include<>和#include" "有什麼區別?為什麼需要使用#include?

#include< > 引用的是編譯器的類庫路徑裡面的標頭檔案  引用自帶的一些標頭檔案

#include" " 引用的是你程式目錄的相對路徑中的標頭檔案 引用自己寫的一些標頭檔案

9.說明下面程式的執行結果。

int

main()

}return0;

}

因為switch中case之上的語句被跳過,所以b=2;
10,下面的**輸出什麼?為什麼?

int

main()

else

return0;

}

輸出a+b=-10;因為整型變數運算,有乙個變數無符號,結果按無符號算;
11.以下程式執行結果是什麼?

int

main()

;int

*ptr=

(int*)

(&nums+1)

;printf

("%d %d\n",*

(nums+1)

,*(ptr-1)

);return0;

}

結果為4 10;*(nums+1)指nums陣列第2個元素,(&nums+1)是增加整乙個陣列的位址;
12.對比下面程式在linux和windows上的輸出結果,並思考原因。

int

main()

return0;

}

linux:xiyoulinuxgroup ---stderr不帶緩衝,stdout帶行緩衝--輸出只有到換行的時候,才會輸出到螢幕

windows:group xiyoulinux---window下stdout和stderr一樣都是不快取的

西郵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 編譯,進行一系列詞法分析 ...

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

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