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