嵌入式常見筆試題總結(5)

1、 如何在C中初始化一個字符數組。
這個問題看似很簡單,但是我們要將最簡單的問題用最嚴謹的態度來對待。關鍵的地方:初始化、字符型、數組。最簡單的方法是char array[];。這個問題看似解決了,但是在初始化上好像還欠缺點什么,個人認為:char array[5]={'1','2','3','4','5'};或者char array[5]={"12345"};或者char array[2][10]={"China","Beijing"};也許更符合“初始化”的意思。

2、 如何在C中為一個數組分配空間。
最簡單的方法是:char array[5];意思是分配給數組array一個5個字節的空間。但是我們要知道在C中數組其實就是一個名字,其實質含義就是指針,比如char array[];是到底分配的多少空間?所以我們要將其分成為兩種不同的形式給出答案:
一種是棧的形式:char array[5];
一種是堆的形式:char *array; array=(char *)malloc(5);//C++: array=new char[5];
堆和棧的含義其實我也沒弄太透徹,改天明白了再發一篇。
我們要明白的是,第一種形式空間分配的大小可能會受操作系統的限制,比如windows會限制在2M;第二種形式成空間分配很靈活,想分配多少分配多少,只要RAM夠大。

3、 如何初始化一個指針數組。
首先明確一個概念,就是指向數組的指針,和存放指針的數組。
指向數組的指針:char (*array)[5];含義是一個指向存放5個字符的數組的指針。
存放指針的數組:char *array[5];含義是一個數組中存放了5個指向字符型數據的指針。
按照題意,我理解為初始化一個存放指針的數組,char *array[2]={"China","Beijing"};其含義是初始化了一個有兩個指向字符型數據的指針的數組,這兩個指針分別指向字符串"China"和"Beijing"。

4、如何定義一個有10個元素的整數型指針數組。
既然只是定義而不是初始化,那就很簡單且沒有爭議了:int *array[10];。

5、 s[10]的另外一種表達方式是什么。
前面說過了,數組和指針其實是數據存在形態的兩種表現形式,如果說對于數組s[],我們知道*s=s[0],那么s[10]的另一種表達方式就是:*(s+10)。

6、 GCC3.2.2版本中支持哪幾種編程語言。
這個問題實在變態,就像問你#error的作用是什么一樣。不可否認,gcc是linux下一個亮點,是一個備受無數程序員推崇的編譯器,其優點省略 1000字,有興趣可以自己查,我翻了翻書,書上曰:支持C,C++,Java,Obj-C,Ada,Fortran,Pascal,Modula-3等語言,這個“等”比較要命,不過我認為已經很全了,如果認為還是不全,干脆把ASM也加上算了,不過那已經不算是編譯了。

7、 要使用CHAR_BIT需要包含哪個頭文件。
如果結合上面的問題,答題的人估計會認為自己撞鬼了,這個問題實在是……搜索了一下,應該是limits.h。

8、 對(-1.2345)取整是多少?
其實不同的取整函數可能有不同的結果,不過這個數沒有太大的爭議,答案是-1。

9、 如何讓局部變量具有全局生命期。
具體的生命期的概念我覺得我還要好好深入的學習一下,但是這個題目還算比較簡單,即用static修飾就可以了,但是只是生命期延長,范圍并沒有擴大,除非把這個變量定義在函數體外的靜態區,不過那樣就變成全局變量了,仿佛不符合題目要求。

10、C中的常量字符串應在何時定義?
這個問題說實話不是很理解題干的意思,據我理解,有兩種情況,一種是預處理階段,用#define定義;還有就是使用const修飾詞,不過const修飾的是一個變量,其含義是“只讀”,稱之為常量并不準確,但是確實可以用操作變量的方法當常量用。所以還是第一種比較靠譜。

11、如何在兩個.c文件中引用對方的變量。
這個問題也問的挺含糊的,怎么說呢,最簡單最直接的方法是為變量添加extern修飾詞,當然,這個變量必須是全局變量。還有一種就是利用函數調用來進行變量的間接引用,比如這個C文件中的一個函數引用另外一個C中的函數,將變量通過實參的形式傳遞過去。不過題目既然說是引用,那么還是用第一個答案好了。

12、使用malloc之前需要做什么準備工作。
其實準備工作很多啊,比如你需要一臺計算機之類的。玩笑話,我們首先要知道malloc的用途,簡單的說就是動態的分配一段空間,返回這段空間的頭指針。實際的準備工作可以這么分:需要這段空間的指針是否存在,若不存在,則定義一個指針用來被賦值,還要清楚要返回一個什么類型的指針,分配的空間是否合理;如果指針已經存在,那么在重新將新的空間頭地址賦值給這個指針之前,要先判斷指針是否為NULL,如果不是要free一下,否則原來的空間就會被浪費,或者出錯,free之后就按照前一種情形考慮就可以了。

13、realloc函數在使用上要注意什么問題。
這個函數我也才知道的,汗一個。據我的初步理解,這個函數的作用是重新分配空間大小,返回的頭指針不變,只是改變空間大小。既然是改變,就有變大、變小和為什么改變的問題。變大,要注意不能大到內存溢出;變小,那變小的那部分空間會被征用,原有數據不再存在;為什么改變,如果是想重新挪作他用,還是先 free了吧。

14、strtok函數在使用上要注意什么問題。
這個問題我不知道能不能回答全面,因為實在是用的很少。這個函數的作用是分割字符串,但是要分割的字符串不能是常量,這是要注意的。比如先定義一個字符串:char array[]="part1,part2";,strtok的原形是char *strtok(char *string, char *delim);,我們將","作為分隔符,先用pt=strtok(array,",");,得到的結果print出來就是"part1",那后面的呢,要寫成pt=strtok(NULL,",");,注意,要用NULL,如果被分割的字符串會被分成N段,那從第二次開始就一直要用NULL。總結起來,需要注意的是:被分割的字符串和分隔符都要使用變量;除第一次使用指向字符串的指針外,之后的都要使用NULL;注意使用這個函數的時候千萬別把指針跟丟了,不然就全亂了。

15、gets函數在使用上要注意什么問題。
這是一個鍵盤輸入函數,將輸入字符串的頭地址返回。說到要注意的問題,我還是先查了一下網上的一些情況,需要注意的就是gets以輸入回車結束,這個地球人都知道,但是很多人不知道的是,當你輸入完一個字符串后,這個字符串可能依然存在于這個標準輸入流之中,當再次使用gets的時候,也許會把上次輸入的東西讀出來,所以應該在使用之后用fflush(stdin);處理一下,將輸入流清空。最后也還是要注意溢出的問題。關于這個答案我比較含糊,不知道有沒有高人高見?

16、C語言的詞法分析在長度規則方面采用的是什么策略?
我無語……聞所未聞啊……還是搜索了一下,有一篇文章,地址是:http://202.117.80.9/jp2005/20/kcwz/wlkc/wlkc/03/3_5_2.htm,是關于詞法分析器的。其中提到了兩點策略: (1) 按最長匹配原則確定被選的詞型;(2) 如果一個字符串能為若干個詞型匹配,則排列在最前面的詞型被選中。不知道是不是題干的要求,還是其他什么。我乃一介草民,望達人指點迷津!

17、a+++++b所表示的是什么意思?有什么問題?
這個東西(稱之為東西一點都不過分)其實并沒有語法錯誤,按照C對運算符等級的劃分,++的優先級大于+,那么這句話會被編譯器看做:(a++)+(++ b),這回明白了吧。有什么問題,語法上沒有問題,有的是道德上的問題!作為一個優秀的程序員,我們要力求語句的合法性和可讀性,如果寫這句的人是在一個 team里,那么他基本會被打的半死……最后討論一下結果:假設a之前的值是3,b是4,那么運行完這個變態語句后,a的值是4,b是5,語句的結果是 8。

18、如何定義Bool變量的TRUE和FALSE的值。
不知道這個題有什么陷阱,寫到現在神經已經大了,一般來說先要把TURE和FALSE給定義了,使用#define就可以:
#define TURE 1
#define FALSE 0
如果有一個變量需要定義成bool型的,舉個例子:bool a=TURE;就可以了。

19、C語言的const的含義是什么。在定義常量時,為什么推薦使用const,而不是#define。
首先,這個題干抽了10題回答的一個大嘴巴。關于常量的概念看來我要好好看看書了……我說過了,const修飾詞可以將一個變量修飾為“只讀”,這個就能稱為常量么?姑且認為可以。回到題目中,const是只讀的意思,它限定一個變量不允許被改變,誰都不能改!既然是修飾變量,那么變量的類型就可以豐富多彩,int啊,char啊,只要C認識的都可以;但是#define就不可以了,在預處理階段缺乏類型檢測機制,有可能會出錯。還有就是變量可以 extern,但是#define就不可以。貌似const還可以節省RAM,這個我倒是沒有考證過。至于const的用法和作用,有很多,我會總結后發上來。

20、C語言的volatile的含義是什么。使用時會對編譯器有什么暗示。
終于最后一題了,容易么……如果這個測試是一個關于嵌入式的,那么這道題非常重要!!從詞面上講,volatile的意思是易變的,也就是說,在程序運行過程中,有一些變量可能會被莫名其妙的改變,而優化器為了節約時間,有時候不會重讀這個變量的真實值,而是去讀在寄存器的備份,這樣的話,這個變量的真實值反而被優化器給“優化”掉了,用時髦的詞說就是被“和諧”了。如果使用了這個修飾詞,就是通知編譯器別犯懶,老老實實去重新讀一遍!可能我說的太“通俗”了,那么我引用一下“大師”的標準解釋:
volatile的本意是“易變的” 。
由于訪問寄存器的速度要快過RAM,所以編譯器一般都會作減少存取外部RAM的優化,但有可能會讀臟數據。當要求使用volatile 聲明的變量的值的時候,系統總是重新從它所在的內存讀取數據,即使它前面的指令剛剛從該處讀取過數據。而且讀取的數據立刻被保存。
精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。
下面是volatile變量的幾個例子:
1). 并行設備的硬件寄存器(如:狀態寄存器)
2). 一個中斷服務子程序中會訪問到的非自動變量(Non-automatic variables)
3). 多線程應用中被幾個任務共享的變量
嵌入式系統程序員經常同硬件、中斷、RTOS等等打交道,所用這些都要求volatile變量。不懂得volatile內容將會帶來災難。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457948.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457948.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457948.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL Server - 高可用與災難恢復(HADR)技術 -- AlwaysOn可用性組(理論篇)

因為篇幅原因,AlwaysOn可用性組被拆成了兩部分:理論部分和實戰部分。而實戰部分又被拆成了準備工作和AlwaysOn可用性組搭建。 三篇文章各自的鏈接: SQL Server ->> 高可用與災難恢復(HADR)技術 -- AlwaysOn&…

嵌入式常見筆試題總結(6)

一、常識理論題 1、 簡述嵌入式操作系統有哪些,你用過哪幾種,簡述其特點、優勢及劣勢?(5分) 2、 請描述控制及提高嵌入式軟件質量有哪些辦法,在開發過程中怎么才能保證嵌入式軟件的可靠性?(5分)…

python 3.6.5編譯安裝_Linux系統安裝Python3.6.5

Linux系統安裝Python3.6.5 1、下載Python3.6.5 wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz 如果報command not found則執行:yum -y install wget命令后再進行下載 也可下載好安裝包進行手動上傳 2、安裝Python3.6可能使用的依賴 yum install o…

從傳統運維到云運維演進歷程之軟件定義存儲(一)

運維是企業業務系統從規劃、設計、實施、交付到運維的最后一個步驟,也是重要的步驟。運維從橫向、縱向分可以分為多個維度和層次,本文試圖拋開這紛繁復雜的概念,講述一個傳統的企業級運維人員轉型到云運維人員,尤其是軟件定義存儲…

Abp Uow 設計

初始化入口 在AbpKernelModule類中&#xff0c;通過UnitOfWorkRegistrar.Initialize(IocManager) 方法去初始化 1 /// <summary>2 /// This class is used to register interceptor for needed classes for Unit Of Work mechanism.3 /// </summary>4 …

python3.8 實現鼠標自動移動_“新生報到”!【移動機器人 HD-1500】負載1500kg,實現了重型貨物運輸的自動化...

2020年第三季度歐姆龍自動化&#xff08;中國&#xff09;有限公司新品【移動機器人 HD-1500】即日起在中國市場首次對外發布&#xff0c;實現了重型貨物運輸的自動化。這款最新的自動化移動機器人重型載荷能力為1500 kg&#xff01;更高的載荷能力可以令客戶實現以前無法實現的…

Linux 關閉服務后 鼠標 鍵盤用不了

大部分情況下我們做實驗都是使用虛擬機&#xff0c;但是個人比較本實在太老了&#xff0c;性能有限&#xff0c;所以虛擬機里面的系統啟動神慢&#xff0c;怎么辦&#xff1f;把系統中自己用不到的服務全部關閉掉唄&#xff0c;如下for i in chkconfig --list | awk {print $1}…

對session的理解

java Servlet API引入session 機制來跟蹤客戶的狀態&#xff0c;session指的是在一段時間內&#xff0c;單個客戶和web服務器之間一連串的交互過程&#xff0c;在一個session中&#xff0c;一個客戶可能會多次請求同一個網頁&#xff0c;也可能請求多個不同服務器資源&#xff…

android 監聽本機網絡請求_fiddler如何抓取https請求實現fiddler手機抓包-證書安裝失敗100%解決...

一、HTTP協議和HTTPS協議。(1) HTTPS協議HTTP協議SSL協議&#xff0c;默認端口&#xff1a;443(2) HTTP協議&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a;超文本傳輸協議。默認端口&#xff1a;80&#xff0c;其中包含請求和響應兩部分&#xff0c;其中請求…

c語言筆試題總結2

下列各題A)、B)、C)、D)四個選項中&#xff0c;只有一個選項是正確的&#xff0c;請將正確選項涂寫在答題卡相應位置上&#xff0c;答在試卷上不得分。(1)算法的時間復雜度是指_______。A)執行算法程序所需要的時間B)算法程序的長度C)算法執行過程中所需要的基本運算次數D)算法…

C#的四舍五入函數

2019獨角獸企業重金招聘Python工程師標準>>> 1.四舍六入&#xff08;國外的四舍五入&#xff09; Math.Round&#xff08;num&#xff09;; 2.四舍五入 Math.Round(num,MidpointRounding.AwayFromZero); 轉載于:https://my.oschina.net/CrazyBoy1024/blog/746268

C語言筆試題總結3

4. static有什么用途&#xff1f;&#xff08;請至少說明兩種&#xff09;1.限制變量的作用域2.設置變量的存儲域7. 引用與指針有什么區別&#xff1f;1) 引用必須被初始化&#xff0c;指針不必。2) 引用初始化以后不能被改變&#xff0c;指針可以改變所指的對象。2) 不存…

【BZOJ2243】 [SDOI2011]染色

Description 給定一棵有n個節點的無根樹和m個操作&#xff0c;操作有2類&#xff1a; 1、將節點a到節點b路徑上所有點都染成顏色c&#xff1b; 2、詢問節點a到節點b路徑上的顏色段數量&#xff08;連續相同顏色被認為是同一段&#xff09;&#xff0c;如“112221”由3段組成&am…

jquery easyui DataGrid 數據表格 屬性

擴展自 $.fn.panel.defaults &#xff0c;用 $.fn.datagrid.defaults 重寫了 defaults 。 依賴 panelresizablelinkbuttonpagination用法 1. <table id"tt"></table> 1. $(#tt).datagrid({ 2. url:datagrid_data.json, 3. columns:[…

C語言筆試題總結

1. 下面這段代碼的輸出是多少(在32位機上). char *p; // 4 char *q[20]; // 80 char *m[20][20]; // 1600 int (*n)[10]; // 4 struct MyStruct { char dda; double dda1; int type ; }&#xff1b; MyStruct k; // 24 printf("%d %d %d %d",sizeof(p),siz…

第五次作業

學習時間新增代碼行博客發表量知識總結 第十周5801HTML5 C和C 一般用于服務端的服務程序開發&#xff0c;硬件編程開發&#xff0c;系統等等大量框架要用到的。JAVA&#xff0c;學好這個可以開發移動設備程序&#xff0c;JSP網頁程序。C#&#xff0c;學了這個可以開發Winform&a…

數字信號處理的fpga實現_FPGA數字信號處理:通信類I/Q信號及產生

大俠好&#xff0c;歡迎來到FPGA技術江湖&#xff0c;江湖偌大&#xff0c;相見即是緣分。大俠可以關注FPGA技術江湖&#xff0c;在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源&#xff0c;或者一起煮酒言歡。大俠好&#xff0c;“寧夏李治廷”再一次和各位見…

iic通訊協議

IIC總線 一般串行數據通訊都有時鐘和數據之分,有異步和同步之別. 有單線,雙線和三線等. I2C肯定是2線的(不算地線). I2C協議確實很科學,比3/4線的SPI要好,當然線多通訊速率相對就快了. I2C的原則是: 在SCL1(高電平)時,SDA千萬別忽悠!!! 否則,SDA下跳則"判罰"為&…

使用 Python 切割圖片

剛好我有張 PNG 圖片需要均勻切割&#xff0c;剛好我不會 PhotoShop&#xff0c;剛好我想用 Python 來練練手。 于是擼袖子碼腳本。 import os from PIL import Imagedef splitimage(src, rownum, colnum, dstpath):img Image.open(src)w, h img.sizeif rownum < h and co…

python數據分析知識點_Python數據分析--Pandas知識點(三)

本文主要是總結學習pandas過程中用到的函數和方法, 在此記錄, 防止遺忘. 下面將是在知識點一, 二的基礎上繼續總結. 前面所介紹的都是以表格的形式中展現數據, 下面將介紹Pandas與Matplotlib配合繪制出折線圖, 散點圖, 餅圖, 柱形圖, 直方圖等五大基本圖形. Matplotlib是python…