国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

電子工程網

標題: 嵌入式研發工程師面試試題大全(ANSI CC++方面的知識 ) [打印本頁]

作者: 老郭    時間: 2009-4-11 09:57
標題: 嵌入式研發工程師面試試題大全(ANSI CC++方面的知識 )
嵌入式研發工程師面試試題大全(ANSI CC++方面的知識 )
一.ANSI C/C++方面的知識
1、簡答題。

1、 如何在C中初始化一個字符數組。

逐個字符賦值:char s[] = {‘A’,’B’,’C’,’D’};

字符串賦值:char s[] = {“ABCD”};

對于二維字符數組:char s[2][10] = {“cheng”,”jinzhou”};


2、 如何在C中為一個數組分配空間。

如果是棧的形式,Type s[N]定義后系統自動分配空間,分配的空間大小受操作系統限制;

若是堆的形式,Type *s;  s = (Type *)malloc(sizeof(Type) * N);  分配的空間大小不受操作系統限制。


3、 如何初始化一個指針數組。

這里有必要重新對比一下指針數組與數組指針的差異。

a. 指針數組:數組里存儲的是指針。

如:int * s[ 5 ] 表示數組s里存儲了5個指向整型的指針。

          Char * s[ 3 ] = {“aaaaa”,”bbb”,”ccccc”}  表示數組s里存儲3個指向字符型的指針,分別指向字符串aaaaa、bbb、ccccc。

b. 數組指針:其實就是數組,里面存放的是數據。

如:int ( * s )[ 5 ] 表示數組s里存儲了5個整型數據。


4、 如何定義一個有10個元素的整數型指針數組。

Int * s [ 10 ];


5、 s[10]的另外一種表達方式是什么。

* ( s + 10 )

二維數組S [ 5 ][ 8 ]的表示方法:*( *(s + 5) + 8 )


7、 要使用CHAR_BIT需要包含哪個頭文件。

Include limits.h

在該頭文件里 #define CHAR_BIT  8


8、 對(-1.2345)取整是多少?   -1


9、 如何讓局部變量具有全局生命期。

使用Static,局部變量就存儲在全局區(靜態區),便具有全局的生命期和局部的訪問控制。


10、C中的常量字符串應在何時定義?

沒有理解到題目的意思,我只是想說明一點,定義常量字符串后它屬于const型,不能去修改它,否則程序出錯。


11、如何在兩個.c文件中引用對方的變量。

尚不清楚,望博友能告知,萬分感謝!


12、使用malloc之前需要做什么準備工作。

定義一個指針后就可以malloc了。


13、realloc函數在使用上要注意什么問題。

Realloc后返回的指針與之前malloc返回的指針指向的地址不同。


14、strtok函數在使用上要注意什么問題。

首次調用時,s必須指向要分解的字符串,隨后調用要把s設成NULL


15、gets函數在使用上要注意什么問題。

這里要將Scanf( )、gets( )放在一起比較。Scanf( )是遇到空格就判斷為輸入結束,而gets( )則遇到回車才判斷為輸入結束。


16、C語言的詞法分析在長度規則方面采用的是什么策略?

尚不清楚,望博友能告知,萬分感謝!


17、a+++++b所表示的是什么意思?有什么問題?

根據自增運算符的右結合性,它是(a++)+(++b)的意思,但有的編譯器里省略括號就不能通過,同時也降低了程序可讀性。


18、如何定義Bool變量的TRUE和FALSE的值。

#define TRUE 1

#define FALSE 0


19、C語言的const的含義是什么。在定義常量時,為什么推薦使用const,而不是#define。

Const是只讀的意思,它限定一個變量不允許被改變。

#define缺乏類型檢測機制,在預處理時候有可能引發錯誤。

Const方面的其它知識擴展:

         問題1:const變量 & const 限定的內容

下面的代碼編譯器會報一個錯誤,請問,哪一個語句是錯誤的呢?

  typedef char * pStr;

  char string[4] = "abc";

  const char *p1 = string;  // *p1 作為整體不能被修改,但p1可以修改,p1++合法

  const pStr p2 = string;  //p2作為一個整體,不能被修改,但是下面的p2++非法修改

  p1++;

  p2++;

     

問題2:const變量 & 字符串常量

請問下面的代碼有什么問題?

char *p = "i''''m hungry!";  //定義的是字符串常量
  p[0]= ''''I''  //不能修改字符串常量
  

問題:const變量 & 字符串常量2

  char a[3] = "abc" 合法嗎?使用它有什么隱患?

沒有考慮到字符串結束符‘\0’,所以會產生意想不到的錯誤。

  比如以下程序:

int main()

{

       int i;

    char p[6] = {''''a'''',''''b'''',''''c'''',''''d'''',''''e'''',''''f''''};

    printf("%s",p);

    while(1);

    return 0;

}

運行后顯示: abcdef@

問題3:const & 指針

類型聲明中const用來修飾一個常量,有如下兩種寫法,那么,請問,下面分別用const限定不可變的內容是什么?    

1)、const在前面

a. const int nValue; //nValue是const

把類型int撇開,變量nValue作為一個整體,因此 nValue是const型;

b. const char *pContent; //*pContent是const, pContent可變

把類型char撇開,變量 *pContent作為一個整體,因此 *pContent是const型;
c. const (char *) pContent;//pContent是const,*pContent可變

把類型char * 撇開,注意這里(char * )是一個整體,而變量 pContent作為一個整體,因此 pContent是const型;

d. char* const pContent; //pContent是const,*pContent可變

const與變量間沒有類型,變量 pContent作為一個整體,因此 pContent是const型;

e. const char* const pContent; //pContent和*pContent都是const

這里分為兩層,外層:把類型char 撇開,變量 * const pContent作為一個整體,因此 * pContent是const型;內層:沒有類型,因此 pContent 是 const 型。

2)、const在后面,與上面的聲明對等 (這類型更容易判斷)

a.  int const nValue; // nValue是const

    const與變量之間沒有類型,const后面那部分整體是const型,因此nValue是const型

b.  char const * pContent;// *pContent是const, pContent可變

    const與變量之間沒有類型,const后面那部分整體是const型,因此 * pContent是const型

c.  (char *) const pContent;//pContent是const,*pContent可變

    const與變量之間沒有類型,const后面那部分整體是const型,因此 pContent是const型

d.  char* const pContent;// pContent是const,*pContent可變

    const與變量之間沒有類型,const后面那部分整體是const型,因此 pContent是const型

e.  char const* const pContent;// pContent和*pContent都是const

分為兩層,外層:撇開類型char,const后面那部分整體* const pContent是const型,因此 * pContent是const型;內層:const與pContent之間無類型,因此pContent是const型。

  

C++中CONST

  C中常用:#define 變量名 變量值定義一個值替代,然而卻有個致命缺點:缺乏類型檢測機制,這樣預處理理在C++中成為可能引發錯誤的隱患,于是引入const.

const使用:

1. 用于指針的兩種情況:const是一個左結合的類型修飾符.

  int const *A; //A可變,*A不可變

  int *const A; //A不可變,*A可變

2.限定函數的傳遞值參數:

void function(const int Var); //傳遞過來的參數在函數內不可以改變.

3.限定函數返回值型.

const int function(); //此時const無意義

const myclassname function(); //函數返回自定義類型myclassname.




20、C語言的volatile的含義是什么。使用時會對編譯器有什么暗示。

         volatile的本意是“易變的”

由于訪問寄存器的速度要快過RAM,所以編譯器一般都會作減少存取外部RAM的優化,但有可能會讀臟數據。當要求使用volatile 聲明的變量的值的時候,系統總是重新從它所在的內存讀取數據,即使它前面的指令剛剛從該處讀取過數據。而且讀取的數據立刻被保存。

精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。

下面是volatile變量的幾個例子:
    1). 并行設備的硬件寄存器(如:狀態寄存器)
    2). 一個中斷服務子程序中會訪問到的非自動變量(Non-automatic variables)
    3). 多線程應用中被幾個任務共享的變量
        嵌入式系統程序員經常同硬件、中斷、RTOS等等打交道,所用這些都要求volatile變量。不懂得volatile內容將會帶來災難。

Volatile的完全擴展:
    1). 一個參數既可以是const還可以是volatile嗎?解釋為什么。

是的。一個例子是只讀的狀態寄存器。它是volatile因為它可能被意想不到地改變。它是const因為程序不應該試圖去修改它。
    2). 一個指針可以是volatile 嗎?解釋為什么。

是的。盡管這并不很常見。一個例子是當一個中服務子程序修該一個指向一個buffer的指針時。
    3). 下面的函數有什么錯誤:
         int square(volatile int *ptr)
         {
              return *ptr * *ptr;
         }
    這段代碼的有個惡作劇。這段代碼的目的是用來返指針*ptr指向值的平方,但是,由于*ptr指向一個volatile型參數,編譯器將產生類似下面的代碼:
    int square(volatile int *ptr)
    {
         int a,b;
         a = *ptr;
         b = *ptr;
         return a * b;
     }
    由于*ptr的值可能被意想不到地該變,因此a和b可能是不同的。結果,這段代碼可能返不是你所期望的平方值!正確的代碼如下:
     long square(volatile int *ptr)
     {
            int a;
            a = *ptr;
            return a * a;
     }
作者: geyingzhen    時間: 2009-8-16 22:26
有沒有配套的答案呢????
作者: tommy    時間: 2009-8-26 09:02

作者: 老郭    時間: 2009-8-28 17:11
俺不會。可以去征求答案。這就去
作者: 252631    時間: 2009-8-28 21:23





歡迎光臨 電子工程網 (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 三男强一女90分钟在线观看| 久久资源365| 男人天堂999| 中文字幕亚洲乱码熟女在线| 欧美成综合网网站| 亚洲人成亚洲人成在线观看| 欧美一区2区| 亚洲成a人片在线观看 欧美| 亚洲视频一区二区| 亚洲男女xxoo做爰猛烈动态| www色小姐| 暖暖 免费 高清 日本在线| 欧洲一区在线观看| 奇米成人| 亚洲国产日产无码精品| 亚洲精品在线视频| 俄罗斯18xv在线观看| 泡妞高手在都市免费观看| 一级片aa| 欧美性生活网址| 亚洲国产成人久久精品影视| 一个人看的视频www| 国产九九九九九九九A片| 手机在线观看mv网址| 新国产视频| 日韩爱爱片| 思思99热久久精品在线6| 中国男男gaygays18| 久久偷拍人| 人人爱人人| 日韩欧美区| 四虎永久在线精品国产| 2224x最新网站| 恋夜秀场支持安卓版全部视频国产 | 99re热精品视频国产免费| 男神插曲女生软件完整版| 外国毛片视频| 天天干在线观看| 亚洲国产区| 国产精品久AAAAA片| 午夜日韩久久影院|