青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Welcome to ErranLi's Blog!

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 178126
  • 排名 - 152

最新評論

閱讀排行榜

1、 代碼:

#include "stdio.h"

int a=0;

int b;

static char c;

int main(int argc,char *argv[])

{

char d=4;

static short e;

a++;

b=100;

c=(char)++a;

e=(++d)++;

printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);

return 0;

}

a) 寫出程序輸出

b) 編譯器如果安排各個變量(a,b,c,d)在內存中的布局(eg. stack,heap,data section,bss section),最好用圖形方式描述。


答案:

int a=0; // data section
int b; // data section
static char c; // BSS
int main(int argc,char *argv[])
{   

char d=4; // stack
static short e; // BSS

a=2,b=100,c=2,d=6,e=5



2、中斷是嵌入式系統中重要的組成部分,這導致了許多編譯開發商提供一種擴展:讓標準C支持中斷,產生了一個新的關鍵字__interrupt。下面的代碼就使用了__interrupt關鍵字去定義了一個中斷服務子程序(ISR),請評論以下這段代碼。

 __interrupt double compute_area(double radius)
 {
 double area = PI * radius *radius;
 printf("nArea = %f", area);
 return area;
}


答案:

a)ISR不能返回一個值;
b)ISR不能傳遞參數;
c)浮點一般都是不可重入的;在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的寄存器入棧,有些處理器/編譯器就是不允許在ISR中做浮點運算。此外,ISR應該是短而有效率的,在ISR中做浮點運算是不明智的
d)printf函數有重入和性能上的問題。


3、關鍵字volatile在編譯時有什么含義?并給出三個不同使用場景的例子(可以偽代碼或者文字描述)。


答案:

用volatile關鍵字定義變量,相當于告訴編譯器,這個變量的值會隨時發生變化,每次使用時都需要去內存里重新讀取它的值,并不要隨意針對它作優化。建議使用volatile變量的場所:
(1) 并行設備的硬件寄存器 (如:狀態寄存器)
(2) 一個中斷服務子程序中會訪問到的非自動變量(全局變量) (Non-automatic variables)
(3) 多線程應用中被幾個任務共享的變量


回答不出這個問題的人是不會被雇傭的。我認為這是區分C程序員和嵌入式系統程序員的最基本的問題。搞嵌入式的家伙們經常同硬件、中斷、RTOS等等打交道,所有這些都要求用到volatile變量。不懂得volatile的內容將會帶來災難。
假設被面試者正確地回答了這是問題(嗯,懷疑是否會是這樣),我將稍微深究一下,看一下這家伙是不是直正懂得volatile完全的重要性。
1)一個參數既可以是const還可以是 volatile嗎?解釋為什么。
2); 一個指針可以是volatile 嗎?解釋為什么。
3); 下面的函數有什么錯誤:

int square(volatile int *ptr)
{
        return *ptr * *ptr;
}

下面是答案:
1)是的。一個例子是只讀的狀態寄存器。它是volatile因為它可能被意想不到地改變。它是const因為程序不應該試圖去修改它。
2); 是的。盡管這并不很常見。一個例子是當一個中服務子程序修該一個指向一個buffer的指針時。
3) 這段代碼有點變態。這段代碼的目的是用來返指針*ptr指向值的平方,但是,由于*ptr指向一個volatile型參數,編譯器將產生類似下面的代碼:

int square(volatile int *ptr) 
{
    int a,b;
    a = *ptr;
    b = *ptr;
    return a * b;
}

由于*ptr的值可能被意想不到地該變,因此ab可能是不同的。結果,這段代碼可能返不是你所期望的平方值!正確的代碼如下:

long square(volatile int *ptr) 
{
    int a;
    a = *ptr;
    return a * a;
}





4、C語言中static關鍵字的具體作用有哪些


答案:

在函數體,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。
在模塊內(但在函數體外),一個被聲明為靜態的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變量。
在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地范圍內使用。
static全局變量與普通的全局變量有什么區別:static全局變量只初使化一次,防止在其他文件單元中被引用;
static局部變量和普通局部變量有什么區別:static局部變量只被初始化一次,下一次依據上一次結果值;
static函數與普通函數有什么區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝



5、下面三種變量聲明有何區別?請給出具體含義

int const *p;

int* const p;

int const* const p;



答案:

一個指向常整型數的指針
一個指向整型數的常指針
一個指向常整型數的常指針



6、對于整形變量A=0x12345678,請畫出在little endian及big endian的方式下在內存中是如何存儲的。


答案:

little endian             big endian 
高地址--〉 0x12      低地址--〉 0x12
               0x34                     0x34
               0x56                     0x56
低地址--〉 0x78      高地址--〉 0x78



7、在ARM系統中,函數調用的時候,參數是通過哪種方式傳遞的?


答案:

參數<=4時候,通過R0~R3傳遞,>4的通過壓棧方式傳遞


8、中斷(interrupt,如鍵盤中斷)與異常(exception,如除零異常)有何區別?


答案:

異常:在產生時必須考慮與處理器的時鐘同步,實踐上,異常也稱為同步中斷。在處理器執行到由于編程失誤而導致的錯誤指令時,或者在執行期間出現特殊情況(如缺頁),必須靠內核處理的時候,處理器就會產生一個異常。
所謂中斷應該是指外部硬件產生的一個電信號,從cpu的中斷引腳進入,打斷cpu當前的運行;
所謂異常,是指軟件運行中發生了一些必須作出處理的事件,cpu自動產生一個陷入來打斷當前運行,轉入異常處理流程。


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


答案:

#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在這想看到幾件事情:
1) #define 語法的基本知識(例如:不能以分號結束,括號的使用,等等)
2)懂得預處理器將為你計算常數表達式的值,因此,直接寫出你是如何計算一年中有多少秒而不是計算出實際的值,是更清晰而沒有代價的。
3) 意識到這個表達式將使一個16位機的整型數溢出-因此要用到長整型符號L,告訴編譯器這個常數是的長整型數。
4) 如果你在你的表達式中用到UL(表示無符號長整型),那么你有了一個好的起點。記住,第一印象很重要。


10、用變量a給出下面的定義
a) 一個整型數(An integer) 
b)一個指向整型數的指針( A pointer to an integer) 
c)一個指向指針的的指針,它指向的指針是指向一個整型數( A pointer to a pointer to an intege
d)一個有10個整型數的數組( An array of 10 integers) 
e) 一個有10個指針的數組,該指針是指向一個整型數的。(An array of 10 pointers to integers) 
f) 一個指向有10個整型數數組的指針(A pointer to an array of 10 integers)
g) 一個指向函數的指針,該函數有一個整型參數并返回一個整型數 (pointer to a function that takes an integer as an argument and returns an integer) 
h) 一個有10個指針的數組,該指針指向一個函數,該函數有一個整型參數并返回一個整型數(An array of ten pointers to functions that take an integer argument and return an integer


答案:

a) int a; 
b) int *a;
c) int **a;
d) int a[10];
e) int *a[10];
f) int (*a)[10];
g) int (*a)(int) ; 
h) int (*a[10])(int) ; 


11、下面的聲明都是什么意思?

const int a;
int const a;
const int *a;
int * const a;
int const * a const;


答案:
前兩個的作用是一樣,a是一個常整型數。第三個意味著a是一個指向常整型數的指針(也就是,整型數是不可修改的,但指針可以)。第四個意思a是一個指向整型數的常指針(也就是說,指針指向的整型數是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數的常指針(也就是說,指針指向的整型數是不可修改的,同時指針也是不可修改的)。如果應試者能正確回答這些問題,那么他就給我留下了一個好印象。順帶提一句,也許你可能會問,即使不用關鍵字 const,也還是能很容易寫出功能正確的程序,那么我為什么還要如此看重關鍵字const呢?我也如下的幾下理由:
1) 關鍵字const的作用是為給讀你代碼的人傳達非常有用的信息,實際上,聲明一個參數為常量是為了告訴了用戶這個參數的應用目的。如果你曾花很多時間清理其它人留下的垃圾,你就會很快學會感謝這點多余的信息。(當然,懂得用const的程序員很少會留下的垃圾讓別人來清理的。)
2) 通過給優化器一些附加的信息,使用關鍵字const也許能產生更緊湊的代碼。
3) 合理地使用關鍵字const可以使編譯器很自然地保護那些不希望被改變的參數,防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現。


12、下面的代碼輸出是什么,為什么?

void foo(void)
{
    unsigned int a = 6;
    int b = -20;
    (a+b > 6) ? puts("> 6") : puts("<= 6");
}


答案:

這個問題測試你是否懂得C語言中的整數自動轉換原則,我發現有些開發者懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是 ">6"。原因是當表達式中存在有符號類型和無符號類型時所有的操作數都自動轉換為無符號類型。因此-20變成了一個非常大的正整數,所以該表達式計算出的結果大于6。這一點對于應當頻繁用到無符號數據類型的嵌入式系統來說是豐常重要的。



13、Typedef C語言中頻繁用以聲明一個已經存在的數據類型的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子:

#define dPS struct s *
typedef struct s * tPS;

以上兩種情況的意圖都是要定義dPS 和 tPS 作為一個指向結構s指針。哪種方法更好呢?(如果有的話)為什么?


答案:

這是一個非常微妙的問題,任何人答對這個問題(正當的原因)是應當被恭喜的。答案是:typedef更好。思考下面的例子:

dPS p1,p2;
tPS p3,p4;

第一個擴展為

struct s * p1, p2;.
上面的代碼定義p1為一個指向結構的指,p2為一個實際的結構,這也許不是你想要的。第二個例子正確地定義了p3 p4 兩個指針。晦澀的語法



14、寫出判斷ABCD四個表達式的是否正確若正確寫出經過表達式中 a的值(3)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?
答案:

C 錯誤,左側不是一個有效變量,不能賦值,可改為(++a) += a;
改后答案依次為9,10,10,11



15、32位系統下, C++程序,請計算sizeof 的值(5).
char str[] = “www.ibegroup.com”
char *p = str ;
int n = 10;
請計算
sizeof (str ) = ?(1
sizeof ( p ) = ?(2
sizeof ( n ) = ?(3
void Foo ( char str[100]){
請計算
sizeof( str ) = ?(4
}
void *p = malloc( 100 );
請計算
sizeof ( p ) = ?(5


答案:

117 23) 454





posted on 2012-08-31 14:12 erran 閱讀(618) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费看av成人| 亚洲尤物视频在线| 亚洲精品视频中文字幕| 国产欧美日韩中文字幕在线| 欧美另类极品videosbest最新版本 | 欧美午夜电影网| 国产精品都在这里| 国产一本一道久久香蕉| 黄色成人av| 亚洲三级色网| 午夜精品影院在线观看| 久久久久亚洲综合| 欧美激情久久久久久| 99re在线精品| 久久电影一区| 欧美日韩dvd在线观看| 国产女人aaa级久久久级| 一区视频在线| 亚洲影院色无极综合| 久久午夜色播影院免费高清| 欧美激情2020午夜免费观看| 一区二区av| 麻豆9191精品国产| 国产日本欧洲亚洲| 亚洲视频在线观看| 美日韩精品视频| 夜夜嗨av色一区二区不卡| 欧美一区二区在线观看| 欧美激情成人在线| 国产色视频一区| 亚洲精品欧洲| 另类激情亚洲| 日韩午夜激情av| 狼人社综合社区| 欧美精品成人| 黑人一区二区| 欧美一区二区免费视频| 亚洲精品久久在线| 小处雏高清一区二区三区| 米奇777超碰欧美日韩亚洲| 国产精品草草| 一区二区三区鲁丝不卡| 美乳少妇欧美精品| 欧美一级二区| 国产精品都在这里| 亚洲开发第一视频在线播放| 久久久久久久性| 亚洲午夜精品久久久久久app| 久久精品国产99| 国产精品亚洲综合一区在线观看| 在线成人免费观看| 久久中文欧美| 亚洲人成网站影音先锋播放| 欧美日韩黄视频| 亚洲二区在线观看| 久久久久久久91| 亚洲视频电影在线| 欧美系列亚洲系列| 99视频精品免费观看| 欧美激情 亚洲a∨综合| 久久综合久久综合这里只有精品| 国产午夜精品久久久久久免费视| 午夜一级在线看亚洲| 中文有码久久| 国产精品一香蕉国产线看观看| 亚洲午夜久久久久久尤物| 亚洲久久成人| 国产精品日韩欧美一区二区| 亚洲欧美影院| 欧美在线视频网站| 亚洲第一福利在线观看| 欧美成人综合网站| 欧美理论电影网| 亚洲午夜精品福利| 亚洲欧美一区二区原创| 国产一区二区激情| 欧美激情一级片一区二区| 欧美日韩高清一区| 欧美中文字幕视频在线观看| 欧美在线观看一二区| 激情久久久久久| 亚洲国产欧美精品| 欧美视频中文在线看| 欧美亚洲视频在线观看| 久久不射2019中文字幕| 最新国产の精品合集bt伙计| 99精品欧美一区| 国产一区二区三区精品久久久 | 亚洲少妇自拍| 一区二区三区偷拍| 激情久久久久久久| 99国产精品久久久久老师| 国产精品日本| 欧美成人免费播放| 国产精品成人播放| 欧美sm重口味系列视频在线观看| 欧美激情91| 久久免费偷拍视频| 国产精品多人| 亚洲国产精品成人一区二区| 国产乱码精品一区二区三区五月婷| 蜜臀久久99精品久久久久久9 | 国产精品porn| 欧美黑人多人双交| 国产精品三上| 亚洲精品免费在线播放| 国产日韩欧美不卡在线| 亚洲激情在线| 激情久久五月天| 亚洲网站啪啪| 久久视频国产精品免费视频在线| 免费高清在线一区| 新片速递亚洲合集欧美合集| 久久综合网络一区二区| 性色av香蕉一区二区| 欧美激情bt| 欧美高清免费| 在线成人免费观看| 久久福利视频导航| 欧美资源在线观看| 国产精品久久久久久影视| 亚洲精品久久久久久一区二区| 在线观看欧美激情| 久久福利毛片| 久久综合久久美利坚合众国| 国产欧美精品一区| 亚洲午夜日本在线观看| 一本大道久久a久久综合婷婷| 久久午夜激情| 久久久国产视频91| 国产一区二区久久| 欧美呦呦网站| 久久性天堂网| 精品成人一区二区| 久久精品成人一区二区三区| 欧美一区二区在线看| 国产精品嫩草99a| 亚洲一级黄色片| 午夜久久久久| 国产精品一香蕉国产线看观看 | 欧美精品一区二区在线观看| 欧美不卡视频一区发布| 伊人久久大香线蕉av超碰演员| 久久久久久久一区| 欧美高清免费| 9久re热视频在线精品| 免费看黄裸体一级大秀欧美| 欧美1区2区视频| 亚洲国产网站| 欧美精品激情blacked18| 亚洲国产欧美一区二区三区同亚洲 | 久久国产精品久久国产精品| 国产美女一区| 欧美亚洲尤物久久| 欧美成人午夜免费视在线看片| 亚洲国产欧美一区| 欧美日韩一区二区在线观看| 一区二区三区久久| 午夜久久久久久久久久一区二区| 国产日韩欧美高清| 美女黄色成人网| 99精品免费| 蜜桃久久精品一区二区| 亚洲天堂网在线观看| 国产人成精品一区二区三| 久久久久国产精品麻豆ai换脸| 欧美大片免费| 午夜一区在线| 亚洲经典视频在线观看| 亚洲观看高清完整版在线观看| 亚洲三级免费电影| 亚洲欧美日韩在线高清直播| 国产一二三精品| 欧美理论电影网| 久久精品国产免费观看| 亚洲精品在线观| 久久久久国产精品www| 亚洲免费观看在线观看| 国产精品五月天| 欧美激情第4页| 欧美在线观看www| 中文在线不卡| 亚洲精品视频一区| 久久久久久综合| 亚洲一区观看| 亚洲美女尤物影院| 狠狠色狠狠色综合系列| 欧美色视频在线| 女人天堂亚洲aⅴ在线观看| 亚洲免费视频成人| 日韩午夜三级在线| 欧美高清在线视频| 久久国产精品色婷婷| 国产精品99久久久久久白浆小说| 黄色一区二区三区四区| 国产精品久久九九| 欧美精品一区二区久久婷婷| 欧美在线视频a| 午夜亚洲福利| 亚洲欧美日韩国产一区|