當前位置:編程學習大全網 - 編程語言 - 搞懂這8個C語言問題,妳也能進大廠

搞懂這8個C語言問題,妳也能進大廠

高懂這8個c語言問題,妳也能進大廠

1、用預處理指令#define聲明壹個常數,用以表明1年中有多少秒(忽略閏年問題)。

#define SEC_YEAR (365*24*60*60)UL考察點:1.#define語法的基本知識(例如:不能以分號結束,括號的使用,等等)。2.懂得預處理器將為妳計算常數表達式的值,因此,直接寫出妳是如何計算壹年中有多少秒而不是計算出實際的值,是更清晰而沒有代價的。

3.意識到這個表達式將使壹個16位機的整型數溢出-因此要用到長整型符號L,告訴編譯器這個常數是的長整型數。4.如果妳在妳的表達式中用到U兒(表示無符號長整型),那麽妳有了壹個好的起點。記住,第壹印象很重要。

2、寫壹個“標準"宏MN,這個宏輸入兩個參數並返回較小的壹個。

#define MIN(a,b)((a)<=(b)?(a):(b))考察點:1.標識#define在宏中應用的基本知識。這是很重要的。因為在嵌入(inline)操作符變為標準C的壹部分之前,宏是方便產生嵌入代碼的唯壹方法,對幹嵌入式系統來說,為了能達到要求的性能,嵌入代碼經常是必須的方法。2.懂得在宏中小心地把參數用括號括起來。3.我也用這個問題開始討論宏的副作用。

3、預處理器標識#error的目的是什麽?

編譯程序時,只要遇到#rror就會跳出壹個編譯錯誤,既然是編譯錯誤,要它幹嘛呢?其目的就是保證程序是按照妳所設想的那樣進行編譯的。#ifdef XXX...#else...#endif

當程序比較大時,往往有些宏定義是在外部指定的(如makefile),或是在系統頭文件中指定的,當妳不太確定當前是否定義了XXX時,就可以改成如下這樣進行編譯:#ifdef XXX#error "XXX has been defined"#else#endif這樣,如果編譯時出現錯誤,輸出了XXX has beendefined,表明宏XXX已經被定義了。

4、嵌入式系統中經常要用到無限循環,妳怎麽樣用C編寫死循環呢?

while(1),for(;;),loop:.…,goto loop。

5、用變量a給出下面的定義。

·a)-個整型數(An integer)。

·b)壹個指向整型數的指針(A pointer to aninteger)。

·c)壹個指向指針的的指針,它指向的指針是指向壹個整型數(A pointer to a pointer to intege)。

·d)壹個有10個整型數的數組(An array of10integers)。

·e)壹個有10個指針的數組,該指針是指向壹個整型數的。(An array? of 10pointers to integers)。

·f)壹個指向有10個整型數數組的指針(A pointerto an array of 10 integers)。

6、關鍵字static的作用是什麽?

在C語言中,關鍵字static有三個明顯的作用:第壹、在修飾變量的時候,static修飾的靜態局部變量只執行壹次,而且延長了局部變量的生命周期,直到程序運行結束以後才釋放。

第二、static修飾全局變量的時候,這個全局變量只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。

第三、static修飾壹個函數,則這個函數的只能在本文件中調用,不能被其他文件調用。Static修飾的局部變量存放在全局數據區的靜態變量區。初始化的時候自動初始化為0。

7、關鍵字const有什麽含意?

只要壹個變量前用const來修飾,就意味著該變量裏的數據只能被訪問,而不能被修改,也就是意味著cost“只讀”(readonly)規則:const離誰近,誰就不能被修改;cost修飾壹個變量時,壹定要給這個變量初始化,若不初始化,在後面也不能初始化。

8、關鍵字volatile有什麽含意?並給出三個不同的例子。

壹個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器裏的備份。下面是volatile變量的幾個例子:

1:並行設備的硬件寄存器(如:狀態寄存器)。

2:壹個中斷服務子程序中會訪問到的非自動變量(Non-automatic variables)

3:多線程應用中被幾個任務***享的變量。

  • 上一篇:怎麽可能想不到這麽多麻煩?
  • 下一篇:燒錄卡,燒錄器是什麽來的?謝謝!!
  • copyright 2024編程學習大全網