面試模擬題答案1(C)_第1頁
面試模擬題答案1(C)_第2頁
面試模擬題答案1(C)_第3頁
面試模擬題答案1(C)_第4頁
面試模擬題答案1(C)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、面試模擬題1 (C)面試題1:用find 寫出查找/opt/kernel目錄下(包括子目錄)文件名為Kconfig的命令。cd /opt/kernel/; find -name Kconfig 或find /opt/kernel -name Kconfig面試題2:用 Vi 編譯器底行命令模式實現(xiàn)字符串替換,把當前文件中的“xiaodai”全部替換成“banzhang”。:%s/xiaodai/banzhang/g面試題3:變量的聲明和定義有什么區(qū)別?為變量分配地址和存儲空間的稱為定義,不分配地址的稱為聲明。一個變量可以在多個地方聲明,但是只在一個地方定義。加入 extern 修飾的是變量的聲

2、明,說明此變量將在文件以外或在文件后面部分定義。說明:很多時候一個變量,只是聲明不分配內(nèi)存空間,直到具體使用時才初始化,分配內(nèi)存空間,如外部變量。面試題4:sizeof是庫函數(shù)嗎?sizeof 和 strlen 的區(qū)別?sizeof 是一個操作符,strlen 是庫函數(shù)。q sizeof 的參數(shù)可以是數(shù)據(jù)的類型,也可以是變量,而 strlen 只能以結尾為 0的字符串作參數(shù)。q 編譯器在編譯時就計算出了 sizeof 的結果。而 strlen 函數(shù)必須在運行時才能計算出來。并且 sizeof計算的是數(shù)據(jù)類型占內(nèi)存的大小,而 strlen 計算的是字符串實際的長度。q 數(shù)組做 sizeof 的參

3、數(shù)不退化,傳遞給 strlen 就退化為指針了。注意:有些是操作符看起來像是函數(shù),而有些函數(shù)名看起來又像操作符,這類容易混淆的名稱一定要加以區(qū)分,否則遇到數(shù)組名這類特殊數(shù)據(jù)類型作參數(shù)時就很容易出錯。最容易混淆為函數(shù)的操作符就是 sizeof。面試題5:鏈表和數(shù)組有什么區(qū)別數(shù)組和鏈表有以下幾點不同:(1)存儲形式:數(shù)組是一塊連續(xù)的空間,聲明時就要確定長度。鏈表是一塊可不連續(xù)的動態(tài)空間,長度可變,每個結點要保存相鄰結點指針。(2)數(shù)據(jù)查找:數(shù)組的線性查找速度快,查找操作直接使用偏移地址。鏈表需要按順序檢索結點,效率低。(3)數(shù)據(jù)插入或刪除:鏈表可以快速插入和刪除結點,而數(shù)組則可能需要大量數(shù)據(jù)移動。

4、(4)越界問題:鏈表不存在越界問題,數(shù)組有越界問題。說明:在選擇數(shù)組或鏈表數(shù)據(jù)結構時,一定要根據(jù)實際需要進行選擇。數(shù)組便于查詢,鏈表便于插入刪除。數(shù)組節(jié)省空間但是長度固定,鏈表雖然變長但是占了更多的存儲空間。面試題6:簡述隊列和棧的異同隊列和棧都是線性存儲結構,但是兩者的插入和刪除數(shù)據(jù)的操作不同,隊列是“先進先出”,棧是“后進先出”。注意:區(qū)別棧區(qū)和堆區(qū)。堆區(qū)的存取是“順序隨意”,而棧區(qū)是“后進先出”。棧由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結構中的棧。堆一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由 OS 回收。分配方式類似于鏈表。它與本題中

5、的堆和棧是兩回事。堆棧只是一種數(shù)據(jù)結構,而堆區(qū)和棧區(qū)是程序的不同內(nèi)存存儲區(qū)域。面試題7:有以下語句: char a=3, b=6, c; c = ab<<2; 則c的二進制值是_0x00011011_。面試題8:如何打印出當前源文件的文件名以及源文件的當前行號?答案:cout << _FILE_ ;cout<<_LINE_ ; _FILE_和_LINE_是系統(tǒng)預定義宏,這種宏并不是在某個文件中定義的,而是由編譯器定義的。面試題9:假設某個函數(shù)的原型為:void foo( int x, int y ); 該函數(shù)分別被C編譯器和C+編譯器編譯后在符號庫中的名字是

6、什么?答:該函數(shù)被C編譯器編譯后在符號庫中的名字為_foo,而C+編譯器則會產(chǎn)生像_foo_int_int之類的名字(不同的編譯器可能生成的名字不同,但是都采用了相同的機制,生成的新名字稱為“mangled name”)。_foo_int_int 這樣的名字包含了函數(shù)名、函數(shù)參數(shù)數(shù)量及類型信息,C+就是靠這種機制來實現(xiàn)函數(shù)重載的。 面試題10:在QT程序中可以調(diào)用被C 編譯器編譯后的函數(shù)嗎?如果可以怎么實現(xiàn)?答:可以,通過加“extern "C"” 連接申明,被extern "C"修飾的變量和函數(shù)是按照C語言方式編譯和連接的面試題11:.h頭文件中的if

7、ndef/define/endif 的作用?i nclude<file.h> 與 i nclude "file.h"的區(qū)別?答:1. 防止該頭文件被重復引用。2. 前者是從Standard Library的路徑尋找和引用file.h,而后者是從當前工作路徑搜尋并引用file.h。面試題12:結構與聯(lián)合有和區(qū)別?答:1. 結構和聯(lián)合都是由多個不同的數(shù)據(jù)類型成員組成, 但在任何同一時刻, 聯(lián)合中只存放了一個被選中的成員(所有成員共用一塊地址空間), 而結構的所有成員都存在(不同成員的存放地址不同)。 2. 對于聯(lián)合的不同成員賦值, 將會對其它成員重寫, 原來成員的值

8、就不存在了, 而對于結構的不同成員賦值是互不影響的。面試題13:全局變量和局部變量可否同名,他們是否有區(qū)別?如果有,是什么區(qū)別?       答:可以同名,從生命周期來說全局變量存活于整個程序運行周期,而局部變量只存在所在函數(shù)的運行周期,當函數(shù)返回后,局部變量也消失,全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧。面試題14:static有什么用途? static全局變量與普通的全局變量有什么區(qū)別?static局部變量和普通局部變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別?答:    

9、;1)在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。     2) 在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。     3) 在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。全局變量(外部變量)的說明之前再冠以static 就構成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲方式,靜態(tài)全局變量當然也是靜態(tài)存

10、儲方式。 這兩者在存儲方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。而靜態(tài)全局變量則限制了其作用域, 即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用,因此可以避免在其它源文件中引起錯 誤。從以上分析可以看出, 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍。 static函數(shù)與普通函數(shù)作用域不同。僅在本文件。只在當前源

11、文件中使用的函數(shù)應該說明為內(nèi)部函數(shù)(static),內(nèi)部函數(shù)應該在當前源文件中說明和 定義。對于可在當前源文件以外使用的函數(shù),應該在一個頭文件中說明,要使用這些函數(shù)的源文件要包含這個頭文件 static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用; static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結果值; static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個被調(diào)用中維持一份拷貝面試題15:什么是預編譯,何時需要預編譯?預編譯又稱為預處理,是做些代碼文本的替換工

12、作。 處理#開頭的指令,比如拷貝#include 包含的文件代碼, #define 宏定義的替換,條件編譯等, 就是為編譯做的預備工作的階段,主要處理#開始的預編譯指令,預編譯指令指示了在程序正式編譯前就由編譯器進行的操作,可以放在程序中的任何位置。c 編譯系統(tǒng)在對程序進行通常的編譯之前,先進行預處理。 c 提供的預處理功能主要有以下三種:1)宏定義 2)文件包含 3)條件編譯、總是使用不經(jīng)常改動的大型代碼體。 、程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預編譯為一個預編譯頭。面試題16:有數(shù)組定義int a22=1,2,3;則a01

13、的值為多少?。a01的值為0面試題17:請計算sizeof的值char  str = “Hello” char   *p = str int     n = 10;請計算sizeof (str ) =_6_sizeof ( p ) =_4_sizeof ( n ) =_4_ void Fu

14、nc ( char str100)請計算sizeof( str ) =4 void *p = malloc( 100 ); 請計算sizeof ( p ) =4 char *str=“Hello”,”HI”, “x0”;請計算:sizeof(str)   =12sizeof(str0) =4面試題18:頭文件中有如下宏定義,#define DECLARE_T

15、ASKLET(name, func, data) struct tasklet_struct name = NULL, 0, ATOMIC_INIT(0), func, data .c源文件中有如下語句,static DECLARE_TASKLET(btn_tasklet, btn_tasklet_func, (unsigned long)&mydata);請寫出預編譯后,該語句展開的結果.static struct tasklet_struct btn_tasklet = NULL, 0, ATOMIC_INIT(0), btn_tasklet_func, ( unsigned lo

16、ng)&mydata ;面試題19:寫一個程序,以遞歸方式反序輸出一個字符串。如給定字符串“abc”輸出“cba ”。#include<stdio.h>void reverse(char *p)if( *p = 0)return;reverse(p+1);printf(“%c”,*p);int main()reverse(“abc”);printf(“n”);return 0;面試題20:對于一個字節(jié)(8bit)的無符號整形變量,求二進制表示中“1”的個數(shù),要求算法執(zhí)行效率盡可能地高。先看看我自己的答案(方法一):unsigned char Count(unsigned c

17、har byt)unsigned char num=0;while (byt)num += (byt & 0×01);byt >>= 1;return num;不管有多少個1都要循環(huán)8次,執(zhí)行效率不高,但是執(zhí)行該函數(shù)的時間每次都是確定的。方法二:直接的方法就是除以2向右移位, 逐個統(tǒng)計,但是用到取模和相除,這個很耗資源。int Count(BYTE v)int num=0;while (v) if (v%2=1)num+;v=v/2;return num; 求余、除法很耗資源,寫程序時應慎用。方法三:使用位操作,但是只會去統(tǒng)計1的個數(shù),循環(huán)的次

18、數(shù)是BYTE中1的個數(shù),無需遍歷。int Count(BYTE v)int num=0;while (v)v &=(v-1); /v=v&(v-1)這個操作可以直接消除掉v中的最右邊的1。num+;return num; 循環(huán)次數(shù)與Byte中1的個數(shù)有關,但是函數(shù)執(zhí)行時間不確定,不過效率比前面的要提高了很多,是不是以為這就是最佳答案了吧,告訴你:NO。方法四:查表法,這個的效率應該是最高的了空間換時間。將0255各個數(shù)中所含的1列出來,查表!int countTable256=0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,

19、4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,

20、5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8;int Count(BYTE v)return countTablev;這個程序要求效率盡可能的高,顯然最后一種的時間復雜度最低了O(1).執(zhí)行時間也是確定的??臻g換時間在某些情況下是個好的選擇,比如需要頻繁使用這個算法的時候,但也不是盡然,還是得視情況而定。面試題2

21、1:參數(shù)傳遞有哪些形式?寄存器和堆棧傳遞各有什么優(yōu)缺點?【考點】編譯優(yōu)化、調(diào)用性能、接口設計。答案:每種體系結構及對應的編譯器對參數(shù)傳遞都有自己的規(guī)定。參數(shù)傳遞并非總是通過堆棧進行的,參數(shù)入棧出棧是需要耗費時間的,編譯器總是盡量優(yōu)化利用寄存器來 傳遞參數(shù),因為寄存器的訪問效率要高,但當參數(shù)過多時,將放棄優(yōu)化從而用棧傳遞參數(shù)。因此為了提高調(diào)用性能,應盡量減少參數(shù)個數(shù),太多時可以將所有參數(shù)重 新定義為一個結構體,利用結構體指針來傳遞參數(shù)。在函數(shù)接口設計時應考慮硬件平臺和編譯器的特性,以靈活定義參數(shù)形式面試題22:Define宏語句和inline函數(shù)有什么區(qū)別? 【考點】時空效率及宏的副作用。答:嵌

22、入式系統(tǒng)平臺通常存儲資源有限,但同時又對實時性有一定的要求,二者如何權衡需要考慮。Define宏語句相對于函數(shù)調(diào)用能提高運行時間性能,但消耗了 空間,并且不標準的宏語句定義在不標準的編碼中更容易出現(xiàn)副作用,因此inline函數(shù)則是define語句的完美替代品。小資金干大事正是嵌入式的終極 目標!面試題23:char a54,a的地址為0,問printf(“%d”,a4+3)值答案:15面試題24:編寫一個宏,實現(xiàn)判斷數(shù)組a元素的個數(shù)。#define CNT( a ) sizeof(a)/sizeof(*a) 面試題25:.#define DOU

23、BLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?答案:i 為 30。面試題26:i+一下代碼的輸出結果是?int i = 1;int j = 2;int k = i+j;cout << k << endl;/*3 i+j 是首先結合為 i+(大多數(shù)的 c 編譯系統(tǒng)都是盡可能多的將多個字符結合成為一個運算符,所以 i+j 等價于(i+)+j),然后再+j;但是 i+是事后計算,也就是先計算 i+j 然后再 i+,所以 k 的值是 1+2=3;然后 i 自增到 2*/面試題27:下面代碼輸出是什么?為什么void foo(void)unsigned i

24、nt a = 6;int b = -20;(a+b > 6) puts("> 6") : puts("<= 6");這個問題測試你是否懂得 C 語言中的整數(shù)自動轉換原則,我發(fā)現(xiàn)有些開發(fā)者懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是“>6”。原因是當表達式中存在有符號類型和無符號類型時所有的操作數(shù)都自動轉換為無符號類型。因此-20 變成了一個非常大的正整數(shù),所以該表達式計算出的結果大于 6。這一點對于應當頻繁用到無符號數(shù)據(jù)類型的嵌入式系統(tǒng)來說是豐常重要的。面試題28:關于動態(tài)申請內(nèi)存的問題void GetMemory(

25、char *p)p = (char *)malloc(100);void Test(void) char *str = NULL;GetMemory(str); strcpy(str, "hello world");printf(str);請問運行 Test 函數(shù)會有什么樣的結果?傳入 GetMemory( char *p )函數(shù)的形參為字符串指針,在函數(shù)內(nèi)部修改形參并不能真正的改變傳入形參的值,執(zhí)行完 char *str = NULL; GetMemory( str ); 后的 str 仍然為 NULL;面試題29:請問運行 Test 函數(shù)會有什么樣的結果?char *G

26、etMemory(void) char p = "hello world"return p;void Test(void)char *str = NULL;str = GetMemory();printf(str);可能是亂碼。char p = "hello world"return p; p數(shù)組為函數(shù)內(nèi)的局部自動變量,在函數(shù)返回后,內(nèi)存已經(jīng)被釋放。這是許多程序員常犯的錯誤,其根源在于不理解變量的生存期。面試題30:請問運行 Test 函數(shù)會有什么樣的結果?void GetMemory2(char *p, int num)*p = (char *)mal

27、loc(num);void Test(void)char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello"); printf(str);能夠輸出 hello, Test 函數(shù)中也未對 malloc 的內(nèi)存進行釋放。 GetMemory 避免了以上問題,傳入 GetMemory 的參數(shù)為字符串指針的指針,但是在 GetMemory中執(zhí)行申請內(nèi)存及賦值語句*p = (char *) malloc( num ); 后未判斷內(nèi)存是否申請成功,應加上:if ( *p = NULL ) ./進行申請內(nèi)存失敗處理 面試題31

28、:請問運行 Test 函數(shù)會有什么樣的結果?void Test(void)char *str = (char *) malloc(100);strcpy(str, “hello”);free(str); if(str != NULL) strcpy(str, “world”); printf(str);運行成功,輸出可能是亂碼,char *str = (char *) malloc(100); 后未進行內(nèi)存是否申請成功的判斷;另外,在 free(str)后未置 str 為空,導致可能變成一個“野”指針,應加上: str = NULL;面試題32:用預處理指令#define 聲明一個常數(shù),用以表

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

30、 語言中結構化程序設計的三種基本控制結構順序結構 選擇結構 循環(huán)結構面試題34:請說出 const 與#define相比,有何優(yōu)點?Const 作用:定義常量、修飾函數(shù)參數(shù)、修飾函數(shù)返回值三個作用。被 Const修飾的東西都受到強制保護,可以預防意外的變動,能提高程序的健壯性。1)const 常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進行類型安全檢查。而對后者只進行字符替換,沒有類型安全檢查,并且在字符替換可能會產(chǎn)生意料不到的錯誤。2)有些集成化的調(diào)試工具可以對 const 常量進行調(diào)試,但是不能對宏常量進行調(diào)試。面試題35:簡述數(shù)組與指針的區(qū)別?數(shù)組要么在靜態(tài)存儲區(qū)被創(chuàng)建(如全局

31、數(shù)組),要么在棧上被創(chuàng)建。指針可以隨時指向任意類型的內(nèi)存塊。(1)修改內(nèi)容上的差別char a = “hello”;a0 = X;char *p = “world”; / 注意 p 指向常量字符串 p0 = X; / 編譯器不能發(fā)現(xiàn)該錯誤,運行時錯誤(2) 用運算符 sizeof 可以計算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p 為指針得到的是一個指針變量的字節(jié)數(shù),而不是 p 所指的內(nèi)存容量。 C+/C 語言沒有辦法知道指針所指的內(nèi)存容量,除非在申請內(nèi)存時記住它。注意當數(shù)組作為函數(shù)的參數(shù)進行傳遞時,該數(shù)組自動退化為同類型的指針。char a = "hello world&quo

32、t;char *p = a;cout<< sizeof(a) << endl; / 12 字節(jié)cout<< sizeof(p) << endl; / 4 字節(jié)計算數(shù)組和指針的內(nèi)存容量void Func(char a100)cout<< sizeof(a) << endl; / 4 字節(jié)而不是 100 字節(jié)面試題36:main 函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼,給出說明?答案:可以,可以用_onexit 注冊一個函數(shù),它會在 main 之后執(zhí)行 int fn1(void), fn2(void), fn3(void),

33、 fn4 (void);void main( void )String str("zhanglin");_onexit( fn1 );_onexit( fn2 );_onexit( fn3 );_onexit( fn4 );printf( "This is executed first.n" );int fn1()printf( "next.n" );return 0;int fn2()printf( "executed " );return 0;int fn3()printf( "is " )

34、;return 0;int fn4()printf( "This " );return 0;面試題37:如果編寫一個標準 strlen 函數(shù)對 strlen 的掌握,它沒有包括字符串末尾的'0'。讀者看了不同分值的 strcpy 版本,應該也可以寫出一個 10 分的 strlen函數(shù)了,完美的版本為:int strlen( const char *str ) /輸入?yún)?shù) const 以下是引用片段:assert( strt != NULL ); /斷言字符串地址非 0int len=0; /注,一定要初始化。while( (*str+) != '0&

35、#39; )len+;return len;面試題38:如何引用一個已經(jīng)定義過的全局變量?答 :可以用引用頭文件的方式,也可以用 extern 關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間會報錯,如果你用 extern 方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯面試題39:dowhile 和 whiledo 有什么區(qū)別?答 前一個循環(huán)一遍再判斷,后一個判斷以后再循環(huán)面試題40:寫一個“標準”宏 MIN#define min(a,b) (a)<=(b)?(a):(b)注意:在調(diào)用時一定要注意這個宏定義的

36、副作用,如下調(diào)用: (+*p)<=(x)?(+*p):(x)。p 指針就自加了兩次,違背了 MIN 的本意。面試題41:typedef 和 define 有什么區(qū)別(1)用法不同:typedef 用來定義一種數(shù)據(jù)類型的別名,增強程序的可讀性。define 主要用來定義常量,以及書寫復雜使用頻繁的宏。(2)執(zhí)行時間不同:typedef 是編譯過程的一部分,有類型檢查的功能。define 是宏定義,是預編譯的部分,其發(fā)生在編譯之前,只是簡單的進行字符串的替換,不進行類型的檢查。(3)作用域不同:typedef 有作用域限定。define 不受作用域約束,只要是在 define 聲明后的引用都是正確的。(4)對指針的操作不同:t ypedef 和 define 定義的指針時有很大的區(qū)別。注意:typedef 定義是語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論