亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語(yǔ)言

c語(yǔ)言常見筆試題總結(jié)

時(shí)間:2024-10-28 05:49:22 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

c語(yǔ)言常見筆試題總結(jié)

  引導(dǎo)語(yǔ):C語(yǔ)言之所以命名為C,是因?yàn)?C語(yǔ)言源自Ken Thompson發(fā)明的B語(yǔ)言,而 B語(yǔ)言則源自BCPL語(yǔ)言。以下是小編整理的c語(yǔ)言常見筆試題總結(jié),歡迎參考閱讀!

c語(yǔ)言常見筆試題總結(jié)

  【1 使用宏】

  1.1 #error的作用?

  #error用于向編譯器報(bào)錯(cuò),并輸出它后面帶的錯(cuò)誤信息。例如:

  #ifndef SOMETHING

  #error SOMETHING not defined!

  #endif

  如果在這段代碼之前未定義過(guò)SOMETHING,則在編譯時(shí)出錯(cuò),并給出"SOMETHING not defined!"的錯(cuò)誤信息。

  1.2 定義一個(gè)宏,求出給定數(shù)組中的元素的個(gè)數(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 復(fù)雜類型(1)】

  有如下表達(dá)式:

  char (*(*x())[])();

  請(qǐng)用文字描述x是什么。 首先,確定標(biāo)識(shí)符:x

  x是一個(gè)函數(shù),沒(méi)有參數(shù):x()

  返回值是一個(gè)指針:*x()

  這個(gè)指針指向一個(gè)數(shù)組:(*x())[]

  數(shù)組中的每個(gè)元素是指針:*(*x())[]

  指向一個(gè)不帶參數(shù)的函數(shù):(*(*x())[])()

  函數(shù)的返回值是char:char (*(*x())[])()

  這里,要知道*、()和[]的優(yōu)先級(jí)

  【5 頭文件】

  問(wèn):為什么標(biāo)準(zhǔn)頭文件都有類似以下的結(jié)構(gòu)?

  #ifndef __INCvxWorksh

  #define __INCvxWorksh #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif #endif

  在編譯源文件時(shí),C編譯器和C++編譯器都會(huì)對(duì)符號(hào)(函數(shù)或變量)名作某些修正,但兩者采用的修正方法不同,所以兩者生成的目標(biāo)文件不能互相鏈接。在C+ +中使用extern "C"可以讓C++符號(hào)獲得C鏈接特性。由于C++編譯器會(huì)自動(dòng)定義__cplusplus宏,所以在C語(yǔ)言頭文件中采用這種結(jié)構(gòu)可以保證無(wú)論使用何種編譯器,生成的目標(biāo)文件都具有C鏈接特性,能夠與標(biāo)準(zhǔn)C編譯器所生成的目標(biāo)文件相鏈接

  【6 static關(guān)鍵字】

  請(qǐng)說(shuō)出static關(guān)鍵字的3種用處:

 。1)用于全局變量;外部靜態(tài)變量,只能在本源文件中被引用,不能被其它源文件所引用。

 。2)用于局部變量;局部靜態(tài)變量,在函數(shù)返回后存儲(chǔ)單元不釋放;下一次調(diào)用該函數(shù)時(shí),該變量為上次函數(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關(guān)鍵字】

  7.1 const關(guān)鍵字的意義是什么?

  7.2 解釋以下的變量定義: const int a1; a1是整型常量。

  int const a2; a2是整型常量。等同于const int a2。

  const int *a3; a3是指針(a3是可變的),指向一個(gè)整型常量。等同于int const *a3。 int * const a4; a4是常量指針(a4不可變),指向一個(gè)整型變量。

  int const * const a5; a5是常量指針(a5不可變),指向一個(gè)整型常量。等同于const int * const a5。

  【8 volatile關(guān)鍵字】

  8.1 volatile意義?

  volatile int *p;

  8.2 volatile能和const一起使用嗎?

  const關(guān)鍵字的意思是限制編程者自己不能修改變量的值;兩者并不矛盾。

  例如一個(gè)內(nèi)存映射的、只讀的硬件寄存器,假設(shè)它的地址是p,則可以這樣聲明:

  volatile const UINT32 *p;

【c語(yǔ)言常見筆試題總結(jié)】相關(guān)文章:

C語(yǔ)言試題03-28

C語(yǔ)言試題(精選)12-05

C語(yǔ)言程序試題03-28

C語(yǔ)言試題及答案07-26

C語(yǔ)言考前模擬試題03-28

C語(yǔ)言模擬試題及答案03-28

C語(yǔ)言模擬試題練習(xí)12-09

標(biāo)準(zhǔn)c語(yǔ)言筆試題12-05

C語(yǔ)言考試試題及答案06-12