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

Welcome to ErranLi's Blog!

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

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 178127
  • 排名 - 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性久久久久蜜臀aⅴ四虎| 免播放器亚洲| 午夜精品久久久| 欧美中文字幕在线播放| 一区二区精品在线观看| 午夜国产精品视频免费体验区| 国产一区二区三区在线观看免费视频| 久久夜色精品国产欧美乱极品| 亚洲剧情一区二区| 国产欧美日韩在线观看| 一区二区三区www| 日韩小视频在线观看| 久久婷婷麻豆| 久久美女性网| 国产手机视频精品| 99热在这里有精品免费| 亚洲国产视频直播| 久久漫画官网| 亚洲一区日韩在线| 欧美激情第三页| 亚洲精品免费网站| 影音先锋久久| 另类天堂视频在线观看| 欧美国产免费| 中文精品99久久国产香蕉| 欧美精品激情blacked18| 亚洲一区激情| 国产偷国产偷亚洲高清97cao| 在线综合视频| 欧美日本在线| 亚洲自拍电影| 欧美在线国产精品| 韩国av一区二区三区| 亚洲大胆人体视频| 久久久久综合网| 欧美激情视频在线播放| 一区二区三区免费在线观看| 国产精品欧美日韩一区二区| 欧美专区日韩视频| 日韩网站在线| 麻豆成人综合网| 一区二区av| 国产精品久久久久久久久| 久久综合网络一区二区| 亚洲欧美成人| 亚洲七七久久综合桃花剧情介绍| 亚洲午夜视频在线观看| 国产一区二区三区高清在线观看| 欧美精品久久久久久久久久| 欧美一区二区三区日韩视频| 99国产精品久久久| 亚洲老司机av| 亚洲人屁股眼子交8| 国内视频精品| 国产揄拍国内精品对白| 国产一区二区成人| 国产色产综合产在线视频| 欧美插天视频在线播放| 亚洲一区二区免费视频| 亚洲天堂视频在线观看| 99在线视频精品| 中文欧美日韩| 午夜精品久久久久久久男人的天堂 | 亚洲国产mv| 亚洲乱码国产乱码精品精98午夜 | 久久久久久久久综合| 久久成人羞羞网站| 欧美激情导航| 亚洲欧美日本国产专区一区| 亚洲看片网站| 亚洲欧美日韩在线一区| 久久精品国产久精国产爱| 久久精品国亚洲| 欧美激情一区二区三区在线视频观看| 亚洲高清网站| 午夜激情久久久| 久久综合久色欧美综合狠狠| 欧美日韩高清区| 国内外成人免费视频| 亚洲综合国产| 亚洲高清123| 久久嫩草精品久久久精品| 欧美日韩综合在线免费观看| 黑人操亚洲美女惩罚| 翔田千里一区二区| 日韩一级黄色大片| 欧美激情片在线观看| 国内精品视频久久| 久久精品成人一区二区三区| 伊人激情综合| 艳妇臀荡乳欲伦亚洲一区| 美女亚洲精品| 性8sex亚洲区入口| 国产精品欧美日韩一区二区| 欧美日韩中文另类| 亚洲国产精品国自产拍av秋霞| 久久se精品一区精品二区| 亚洲一区二区三区色| 国产精品一国产精品k频道56| 日韩一级免费| 一本色道久久综合狠狠躁篇怎么玩| 久久伊人亚洲| 亚洲精品偷拍| 亚洲香蕉伊综合在人在线视看| 国产精品日韩精品欧美精品| 亚洲一区二区三区高清 | 欧美精品色综合| 亚洲综合欧美日韩| 亚洲综合另类| 一区二区亚洲精品| 国产精品久久久久久久久久久久久 | 久久久xxx| 女主播福利一区| 99re热精品| 欧美在线播放一区| 日韩西西人体444www| 午夜宅男久久久| 一区二区三区视频观看| 欧美一级片久久久久久久| 这里只有精品视频在线| 久久久久久综合网天天| 欧美成人三级在线| 欧美一级视频免费在线观看| 欧美精选一区| 亚洲国产第一| 亚洲福利视频网站| 午夜激情综合网| 亚洲欧美国产精品专区久久| 欧美精品在线看| 亚洲久久在线| 亚洲一区中文| 国产精品视频免费一区| 亚洲一区黄色| 久久久久亚洲综合| 亚洲大胆人体视频| 欧美国产一区在线| 在线视频精品一区| 亚洲自拍16p| 国产一区观看| 欧美1区3d| 亚洲国产高潮在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 欧美国产大片| 亚洲欧美变态国产另类| 老司机一区二区三区| 日韩视频亚洲视频| 国产精品视频自拍| 久久久久久久久久码影片| 欧美福利视频在线| 亚洲伊人伊色伊影伊综合网| 在线观看视频一区| 国产精品美女www爽爽爽视频| 亚洲黄一区二区| 欧美sm视频| 日韩午夜激情av| 久热re这里精品视频在线6| 在线欧美一区| 国产精品萝li| 久久久久久亚洲综合影院红桃| 国产日韩综合一区二区性色av| 中文在线不卡| 欧美日韩在线观看一区二区| 欧美美女bb生活片| 中日韩高清电影网| 亚洲欧洲一区二区在线观看| 乱中年女人伦av一区二区| 久久爱另类一区二区小说| 黄色国产精品| 欧美成人午夜视频| 久久人人97超碰精品888| 亚洲激情午夜| 一本久久精品一区二区| 国产精品一区久久久| 久久久999精品视频| 免费亚洲电影| 亚洲性xxxx| 欧美一区二区黄| 亚洲欧洲日韩综合二区| 一本色道久久加勒比精品| 国产在线麻豆精品观看| 亚洲人www| 国产精品久久久久久久久久尿 | 久久久久国内| 男女激情视频一区| 欧美一区二区免费观在线| 欧美电影免费观看高清完整版| 亚洲视频图片小说| 欧美一区二区三区男人的天堂| 亚洲清纯自拍| 欧美一区二区视频在线| 在线亚洲观看| 欧美肥婆在线| 女女同性精品视频| 国产精品美女主播在线观看纯欲| 欧美激情在线播放| 国产综合精品| 亚洲专区免费| 中文精品视频|