- 相關推薦
c語言常見筆試題總結(jié)
引導語:C語言之所以命名為C,是因為 C語言源自Ken Thompson發(fā)明的B語言,而 B語言則源自BCPL語言。以下是小編整理的c語言常見筆試題總結(jié),歡迎參考閱讀!
【1 使用宏】
1.1 #error的作用?
#error用于向編譯器報錯,并輸出它后面帶的錯誤信息。例如:
#ifndef SOMETHING
#error SOMETHING not defined!
#endif
如果在這段代碼之前未定義過SOMETHING,則在編譯時出錯,并給出"SOMETHING not defined!"的錯誤信息。
1.2 定義一個宏,求出給定數(shù)組中的元素的個數(shù) #define NELEMENTS(array) (sizeof(array) / sizeof((array)[0]))
【2 數(shù)據(jù)聲明和定義】
給定以下類型的變量a的定義式:
a) An integer
int a;
b) A pointer to an integer
int *a;
c) A pointer to a pointer to an integer
int **a;
d) An array of 10 integers
int a[10];
e) An array of 10 pointers to integers
int *a[10];
f) A pointer to an array of 10 integers
int (*a)[10];
g) A pointer to a function that takes an integer as an argument and returns an integer int (*a)(int );
h) An array of ten pointers to functions that take an integer argument and return an integer int (*a[10] ) (int );
【3 復雜類型(1)】
有如下表達式:
char (*(*x())[])();
請用文字描述x是什么。 首先,確定標識符:x
x是一個函數(shù),沒有參數(shù):x()
返回值是一個指針:*x()
這個指針指向一個數(shù)組:(*x())[]
數(shù)組中的每個元素是指針:*(*x())[]
指向一個不帶參數(shù)的函數(shù):(*(*x())[])()
函數(shù)的返回值是char:char (*(*x())[])()
這里,要知道*、()和[]的優(yōu)先級
【5 頭文件】
問:為什么標準頭文件都有類似以下的結(jié)構(gòu)?
#ifndef __INCvxWorksh
#define __INCvxWorksh #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif #endif
在編譯源文件時,C編譯器和C++編譯器都會對符號(函數(shù)或變量)名作某些修正,但兩者采用的修正方法不同,所以兩者生成的目標文件不能互相鏈接。在C+ +中使用extern "C"可以讓C++符號獲得C鏈接特性。由于C++編譯器會自動定義__cplusplus宏,所以在C語言頭文件中采用這種結(jié)構(gòu)可以保證無論使用何種編譯器,生成的目標文件都具有C鏈接特性,能夠與標準C編譯器所生成的目標文件相鏈接
【6 static關鍵字】
請說出static關鍵字的3種用處:
(1)用于全局變量;外部靜態(tài)變量,只能在本源文件中被引用,不能被其它源文件所引用。
(2)用于局部變量;局部靜態(tài)變量,在函數(shù)返回后存儲單元不釋放;下一次調(diào)用該函數(shù)時,該變量為上次函數(shù)返回時的值。
(3)用于函數(shù)。內(nèi)部函數(shù),只能被本源文件中的函數(shù)所調(diào)用,不能被其它源文件調(diào)用。 /* file.c */
static int a;
int b;
static int fn()
{
static int x;
int y;
}
【7 const關鍵字】
7.1 const關鍵字的意義是什么?
7.2 解釋以下的變量定義: const int a1; a1是整型常量。
int const a2; a2是整型常量。等同于const int a2。
const int *a3; a3是指針(a3是可變的),指向一個整型常量。等同于int const *a3。 int * const a4; a4是常量指針(a4不可變),指向一個整型變量。
int const * const a5; a5是常量指針(a5不可變),指向一個整型常量。等同于const int * const a5。
【8 volatile關鍵字】
8.1 volatile意義?
volatile int *p;
8.2 volatile能和const一起使用嗎?
const關鍵字的意思是限制編程者自己不能修改變量的值;兩者并不矛盾。
例如一個內(nèi)存映射的、只讀的硬件寄存器,假設它的地址是p,則可以這樣聲明:
volatile const UINT32 *p;
【c語言常見筆試題總結(jié)】相關文章:
C語言面試常見試題10道11-14
C語言試題08-02
C語言試題11-01
C語言試題10-20
C語言程序試題04-26
C語言試題大全08-06
C語言試題及答案07-26
C語言練習試題07-01
c語言經(jīng)典筆試題10-06