亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? c語言功力測試題.txt

?? C語言功力測試題 包括答案 測試你對C語言的掌握程度 面試必看
?? TXT
字號:
另外,在實際的VC++教學(xué)中,發(fā)現(xiàn)很少有真正精通了C語言編程的學(xué)員,一般都有或多或少概念不是完全清楚的問題,特別是一些需要豐富的實戰(zhàn)經(jīng)驗才能體會和明白的問題,如字符串,指針,類型轉(zhuǎn)換,定義指向函數(shù)的指針類型,這也是導(dǎo)致學(xué)習(xí)VC++困難的一個原因。下面有幾個簡單測試將能發(fā)現(xiàn)你對C語言的掌握情況。

int x=35;
char str[10];
//問:strlen(str)和sizeof(str)的值分別是多少?
strcpy(str,"www.it315.org"/*共13個字母*/);
//問:此時x和strlen(str)的值分別是多少?
str="it315.org";//編譯能通過嗎?
char *pstr;
strcpy(pstr,"http://www.it315.org");
//上句編譯能通過嗎?運行時有問題嗎?
const char *p1;
char * const p2;
//上面兩句有什么區(qū)別嗎?
p1=(const char *)str;
//如果是p1=str;編譯能夠通過嗎?明白為什么要類型轉(zhuǎn)換?類型轉(zhuǎn)換的本質(zhì)是什么?
strcpy(p1,"abc");//編譯能夠通過嗎?
printf("%d",str);//有問題嗎?
pstr=3000;//編譯能過嗎?如果不行,該如何修改以保證編譯通過呢?
long y=(long)pstr;//可以這樣做嗎?
int *p=str;
*p=0x00313200;
printf("%s",str);//會是什么效果?提示0x31對應(yīng)字符'1',0x32對應(yīng)字符'2'。
p=3000;//p+1的結(jié)果會是多少?
char *pc=new char[100];//上述語句在內(nèi)存中占據(jù)幾個內(nèi)存塊,怎樣的布局情況?
void test(char **p)
{
       *p=new char[100];
}//這個編譯函數(shù)有問題嗎?外面要調(diào)用這個函數(shù),該怎樣傳遞參數(shù)?
//能明白typedef int (*PFUN)(int x,int y)及其作用嗎?
 
對于許多類似的問題一般從書本上是看不到的,不通過大量的實踐與調(diào)試是難以理解和令人困惑的,所以在本書中對于類似上述的C語言問題都將作出詳細(xì)的解釋和講解。










下面是網(wǎng)友Jackie214發(fā)布的答案,其認(rèn)真態(tài)度令我深受感動.這些題是我2000年在做培訓(xùn)時為學(xué)員們設(shè)計的,但我已經(jīng)近6年沒有接觸過vc++下的c語言編程了,有9年沒接觸unix下的c語言編程了,所以,除了一些核心思想令我終生難忘外,其他一些語法細(xì)節(jié)和當(dāng)初出題的意圖何在,我也差不多忘記了!前天把這個測試題發(fā)布出來,是因為前一陣才知道我多年前寫的一些內(nèi)容又要被別人加入到其書籍中出版(我只是對一些人慣于借鑒別人的東西而當(dāng)作自己成就的性格很不贊賞,但這般行為在商業(yè)上來說是無可厚非,甚至是值得學(xué)習(xí),只是我自己做不出這樣的事情來,反而有點自己沒膽量吃葡萄,就說吃葡萄的人酸),當(dāng)時非常生氣,就又翻騰出了這些快被自己遺忘的東西,前幾天就順便把這個測試題發(fā)表在自己的blog里了.我沒有受過正規(guī)的計算機教育,除了自學(xué)過譚浩強的那本入門級的c語言,也沒有看過c語言方面的經(jīng)典名著,很多東西都是自己瞎摸索出來的,所以有自己的講課思路,但不一定嚴(yán)謹(jǐn),還請看客多多諒解!
另外,我有過一段開發(fā)實踐和教學(xué)經(jīng)歷后,回過頭來看譚老爺子的那本c語言書,覺得寫得真的很不好,沒抓主重點,講解也不通俗,很多人都這么認(rèn)為,但也沒有人能下定決心,吃上兩年的苦,寫一被絕對好過老譚的書,我曾經(jīng)有過這般想法,但一直未能實施!我期望書能通過試驗來讓讀者輕松學(xué)懂,并且學(xué)懂后還不容易忘記,所以要把原理性的東西用通俗易懂的方式表現(xiàn)出來,還要高度總結(jié)出核心思想,如果誰有這方面的心愿,不妨與我合作!
下面是網(wǎng)友Jackie214發(fā)布的答案,隨后是我的一點補充.
Jackie214 發(fā)表于2006-05-19 11:47 AM  IP: 61.154.9.*
int x=35; 
char str[10]; 

//問:strlen(str)和sizeof(str)的值分別是多少? 
// strlen(str) 值不確定,strlen根據(jù)'\0'確定字符串是否結(jié)束。 
// sizeof(str)=10 sizeof一個數(shù)組為數(shù)組長度 

strcpy(str,"www.it315.org"/*共13個字母*/); 
//問:此時x和strlen(str)的值分別是多少? 
// x 為35 
// strcpy(char* dest, const char* src) 
// 根據(jù)src來復(fù)制dest,依照src的'\0'決定復(fù)制的長度,而dest必須要提供足夠的長度,這里會引起溢出,strlen返回13,但是數(shù)組外部的數(shù)據(jù)已經(jīng)被破壞
//(作者注:我下面給出了更確切的答案 )

str="it315.org";//編譯能通過嗎? 
// 數(shù)組不能賦值,只能初始化。char str[10] = "it315.org"; 
// 而且初始化時編譯器會檢查數(shù)組的長度與初始化串的長度是否匹配 

char *pstr; 
strcpy(pstr,"http://www.it315.org"); 
//上句編譯能通過嗎?運行時有問題嗎? 
// 可以通過編譯,但是pstr指向了常量區(qū),運行時最好只做讀操作,寫操作不保險 
//(作者注:我下面給出了更確切的答案 )


const char *p1; 
char * const p2; 
//上面兩句有什么區(qū)別嗎? 
// const char* 和 char const* 一樣,都是表示指向常量的字符指針。 
// char * const 表示指向字符的常量指針 

p1=(const char *)str; 
//如果是p1=str;編譯能夠通過嗎?明白為什么要類型轉(zhuǎn)換?類型轉(zhuǎn)換的本質(zhì)是什么? 
// 可以通過編譯。關(guān)于常量與非常量指針的關(guān)系是這樣的: 
// const指針可以指向const或者非const區(qū)域,不會造成什么問題。 
// 非const指針不能指向const區(qū)域,會引起錯誤。 

strcpy(p1,"abc");//編譯能夠通過嗎? 
// 不能通過,strcpy( char*, const char*); char* 不能指向const char* 

printf("%d",str);//有問題嗎? 
// 沒有問題,輸出的是str的地址信息。 

pstr=3000;//編譯能過嗎?如果不行,該如何修改以保證編譯通過呢? 
// 不能通過,char* pstr表示pstr是個字符指針,不能指向3000的整形變量。 
// 修改的話,可以這樣:pstr = (char*)3000,把pstr指向3000這個地址; 

long y=(long)pstr;//可以這樣做嗎? 
// 可以,y的值為pstr所指的地址。不過如果是純粹要地址的話,最好是用unsigned long。 

int *p=str; 
*p=0x00313200; 
printf("%s",str);//會是什么效果?提示0x31對應(yīng)字符'1',0x32對應(yīng)字符'2'。 
// 首先編譯未必會過關(guān),有些編譯器可能不允許int * 直接指向char*。最好是改為int *p = (int*)str; 
// 過關(guān)了效果就是什么東西都沒有。int *p=str; p為str所指的地址,*p表示修改了str所指向的內(nèi)存。 
// 由于sizeof(int)在32位機上,int有4個字節(jié)(其實具體要看編譯器的配置文件,好像是limit.h,一般是4個字節(jié))所以修改了str[0]-str[3] 
// 由于0x00313200頭尾都是0,所以字符串為'\0'開頭,什么都打印不出來。這里有個Big-endin和little-endin的問題。以0x31323334為例 
// little-endin的機器上面,0x31323334在內(nèi)存中排列順序為34 33 32 31,輸出為4321,如INTEL芯片的pc 
// big-endin機器上面為31 32 33 34 ,輸出為1234,如IBM POWERPC 

p=3000;//p+1的結(jié)果會是多少? 
// 3000+sizeof(int); 指針+1均為原來地址加上sizeof(指針?biāo)傅臄?shù)據(jù)類型) 

char *pc=new char[100];//上述語句在內(nèi)存中占據(jù)幾個內(nèi)存塊,怎樣的布局情況? 
// 本身pc會占用函數(shù)棧一個4字節(jié)的指針長度(具體是否為4個字節(jié)要看機器和編譯器)。 
// new會在堆上申請100個字節(jié)sizeof(char)的連續(xù)空間。 

void test(char **p) 
{ 
*p=new char[100]; 
}//這個編譯函數(shù)有問題嗎?外面要調(diào)用這個函數(shù),該怎樣傳遞參數(shù)? 
// 該程序沒有問題。需要在函數(shù)中對指針?biāo)傅牡刂愤M(jìn)行變化是必須傳人指針的地址。 
// 原因是這樣的:如果傳入的為指針本身,在函數(shù)調(diào)用的時候,實參會被復(fù)制一個實例,這樣就不是原來的指針了,對該指針本身進(jìn)行的任何改變都不能傳遞回去了。 
// 可以這樣理解,如果傳入的參數(shù)為int,那么對int本身的值的改變就傳不回去啦,加個*也是一樣的。 


//能明白typedef int (*PFUN)(int x,int y)及其作用嗎? 
// 定義了一個函數(shù)指針類型的宏,這樣PFUN就表示指向返回值為int,且同時帶2個int參數(shù)的函數(shù)指針類型了。 
// 可以用來定義這樣的變量: 
// 比如有個函數(shù)為int fun( int x, int y ); 
// PFUN p = fun; 
//(作者注:我下面給出了更確切的答案) 

--------------------------------------------------------------------------------------------------------------
下面是我的一點補充:
第二題:
int x=35; 
char str[10]; 
strcpy(str,"www.it315.org"/*共13個字母*/); 
//問:此時x和strlen(str)的值分別是多少? 
答:strlen的值為13,在VC++環(huán)境下,x的值是要改變的(其他編譯器下沒試,).雖然表面上看來,在程序中并沒有修改x的值,但是實際運行的結(jié)果是上面的x的值發(fā)生了修改,這是因為strcpy以后,把多余的數(shù)據(jù)拷貝進(jìn)了str的鄰居(int類型的x)中,所以x的數(shù)據(jù)也就變了.這是一個曾讓我刻骨銘心的問題,在我剛出道時遇到這個問題,雖然在朋友的幫助下解決了這個問題,但一直不明白x的值為何變了,只有最后走上培訓(xùn)教師的崗位,才開始梳理自己曾經(jīng)的困惑,才開始總結(jié)以前的經(jīng)驗供學(xué)員們借鑒.我覺得這個題目的價值非常之大,它能引起學(xué)員對字符串拷貝越界問題的足夠重視,并且通過這個問題更能明白字符串的處理是怎么回時,更能明白字符串與字符數(shù)組的關(guān)系:字符串就是一個字符數(shù)組,只是把這個字符數(shù)組用在處理串的函數(shù)中時,這些函數(shù)不考慮數(shù)組的長度,只是記住數(shù)組的首地址,從首地址開始處理,并在遇到0時結(jié)束處理,
第四題:
char *pstr; 
strcpy(pstr,"http://www.it315.org"); 
//上句編譯能通過嗎?運行時有問題嗎? 
答: 編譯可以通過,但是pstr沒有進(jìn)行有效的初始化,它指向了一個不確定的內(nèi)存區(qū),運行時會出現(xiàn)內(nèi)存不可寫錯誤! 
最后一題:
//能明白typedef int (*PFUN)(int x,int y)及其作用嗎? 
答:函數(shù)指針最大的用處在于它可以被一個模板方法調(diào)用,這是我在學(xué)java的設(shè)計模式時領(lǐng)悟到的.例如,有兩個函數(shù)的流程結(jié)構(gòu)完全一致,只是內(nèi)部調(diào)用的具體函數(shù)不同,如下所示:
void func1()
{
         //一段流程代碼和面向方面的代理,如安全檢查,日志記錄等
         int sum = add( x , y);
        //一段流程代碼和面向方面的代理,如安全檢查,日志記錄等
}
void func2()
{
         //與func1完全相同的一段流程代碼和面向方面的代理,如安全檢查,日志記錄等
         int difference = sub( x , y);
        //與func1完全相同的一段流程代碼和面向方面的代理,如安全檢查,日志記錄等
}

那么,可以只定義一個函數(shù),如下所示
void func(PFUNC p)
{
         //與func1完全相同的一段流程代碼和面向方面的代理,如安全檢查,日志記錄等
         int difference = p( x , y);
        //與func1完全相同的一段流程代碼和面向方面的代理,如安全檢查,日志記錄等
}
調(diào)用程序在調(diào)用時,讓參數(shù)p分別指向add和sub函數(shù)就可以了.
對于其他題目的講解,由于我目前寫作和工作的重點已完全不在c語言方面了,也沒有時間一一解答,就借用Jackie214發(fā)布的答案來回應(yīng)大家.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品图片| 成人app网站| 亚洲欧美偷拍三级| 日韩一区在线看| 亚洲香蕉伊在人在线观| 日韩中文字幕区一区有砖一区| 一区二区高清免费观看影视大全| 日本三级韩国三级欧美三级| 秋霞国产午夜精品免费视频| 成人av电影在线观看| 91精品国产一区二区三区香蕉| 国产精品女主播av| 一区二区三区精品在线观看| 激情综合色播五月| 国产盗摄精品一区二区三区在线| 欧美熟乱第一页| 国产欧美日韩三级| 亚洲超碰精品一区二区| 国产精品一品二品| 日韩欧美成人一区| 亚洲欧美日韩在线不卡| 国产专区欧美精品| 欧美一区二区三区在线视频| 国产精品素人视频| 激情综合五月天| 欧美高清hd18日本| 亚洲色图丝袜美腿| 美女久久久精品| 欧美性猛交xxxx乱大交退制版| 久久久99免费| 亚洲福利一区二区三区| 色哟哟精品一区| 亚洲色图丝袜美腿| 91看片淫黄大片一级| 中文字幕av一区二区三区高| 国产尤物一区二区| 久久久久成人黄色影片| 风间由美一区二区三区在线观看| 国产人伦精品一区二区| 国产sm精品调教视频网站| 国产精品丝袜在线| 91同城在线观看| 亚洲国产另类精品专区| 91精品国产综合久久蜜臀| 奇米一区二区三区av| 久久久亚洲午夜电影| 成人福利电影精品一区二区在线观看 | 在线观看视频欧美| 午夜不卡在线视频| 欧美精品成人一区二区三区四区| 日韩av中文在线观看| 2017欧美狠狠色| 99在线热播精品免费| 一区二区三区在线免费播放| 欧美精选一区二区| 国产乱码字幕精品高清av| 中文字幕中文字幕一区二区| 色吊一区二区三区| 日本欧美一区二区| 国产三级精品三级| 欧美午夜一区二区| 国产一区二区三区在线观看精品| 国产女主播视频一区二区| 色域天天综合网| 九色综合国产一区二区三区| 中文字幕在线不卡一区| 欧美电影一区二区三区| 国产精品自拍三区| 亚洲一区视频在线| 久久亚洲一级片| 欧美日韩一区三区四区| 风间由美中文字幕在线看视频国产欧美 | 精品福利一二区| 色综合夜色一区| 激情久久五月天| 亚洲一区在线视频| 国产丝袜在线精品| 欧美一区二区三区日韩| 99精品欧美一区二区蜜桃免费 | 99久久久国产精品| 美女看a上一区| 亚洲一区二区三区四区五区中文| 欧美mv和日韩mv国产网站| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲成人自拍偷拍| 国产三级精品在线| 日韩一级大片在线观看| 91麻豆文化传媒在线观看| 精品亚洲国内自在自线福利| 亚洲自拍偷拍综合| 自拍偷拍亚洲综合| 国产亚洲婷婷免费| 欧美大片顶级少妇| 欧美精品 日韩| 欧美亚一区二区| 99久久99久久精品免费观看| 黑人巨大精品欧美黑白配亚洲| 亚洲制服欧美中文字幕中文字幕| 国产精品美女久久久久久2018| 精品国产不卡一区二区三区| 3atv一区二区三区| 欧美日韩精品一区二区三区 | 成人av在线看| 国产高清在线精品| 国产在线播放一区三区四| 日本最新不卡在线| 日韩av二区在线播放| 亚洲国产日韩a在线播放| 亚洲免费高清视频在线| 亚洲人妖av一区二区| 国产精品久久久久久妇女6080| 国产亚洲人成网站| 中文字幕欧美三区| 国产精品你懂的在线欣赏| 日本一区免费视频| 国产精品久久久久久久久免费桃花| 久久久五月婷婷| 国产婷婷色一区二区三区 | 国产精品综合久久| 国产精品1024| 国产成人免费xxxxxxxx| 国产xxx精品视频大全| 成人国产视频在线观看| 91免费视频观看| 在线观看欧美日本| 91精品国产一区二区| 日韩一区二区三区视频在线观看| 日韩欧美精品三级| 久久久久免费观看| 国产精品国产三级国产专播品爱网| 国产精品欧美极品| 亚洲图片欧美视频| 九色综合狠狠综合久久| 成人高清视频在线| 欧美影院一区二区三区| 制服.丝袜.亚洲.另类.中文 | 亚洲三级在线免费观看| 亚洲一二三区不卡| 蜜桃av一区二区三区电影| 91丨九色丨国产丨porny| 美腿丝袜亚洲三区| 卡一卡二国产精品 | 欧美激情在线一区二区| 亚洲人成7777| 奇米在线7777在线精品| 成人高清伦理免费影院在线观看| 色婷婷综合久久久久中文| 日韩视频免费观看高清完整版 | 欧美精品一区在线观看| 国产精品家庭影院| 日韩av一区二区三区| 成人午夜激情影院| 在线播放91灌醉迷j高跟美女 | 日本午夜精品一区二区三区电影 | 亚洲色图丝袜美腿| 蜜桃av一区二区在线观看| 成人av综合一区| 日韩美女在线视频| 夜夜爽夜夜爽精品视频| 国产麻豆一精品一av一免费| 欧美在线观看视频在线| 国产婷婷一区二区| 日韩成人dvd| 91国内精品野花午夜精品| 精品粉嫩超白一线天av| 亚洲小少妇裸体bbw| 成人毛片视频在线观看| 精品国产一区二区三区忘忧草| 亚洲裸体xxx| 九九精品一区二区| 欧美韩日一区二区三区| 久久er精品视频| 欧美三级中文字| 七七婷婷婷婷精品国产| 91精品国产综合久久香蕉的特点| 一区二区理论电影在线观看| 欧美嫩在线观看| 777色狠狠一区二区三区| 日韩毛片视频在线看| 国产精品资源网站| 欧美α欧美αv大片| 性做久久久久久久久| 97精品电影院| 18欧美乱大交hd1984| 高清成人在线观看| 国产亚洲一区二区三区在线观看| 午夜精品福利久久久| 欧美性生活一区| 亚洲综合色区另类av| 一本一道综合狠狠老| 日本一区二区三区电影| 国产一区二区三区| 久久伊人中文字幕| 精品一区二区免费在线观看| 91精品国产美女浴室洗澡无遮挡| 亚洲欧美日韩国产综合在线| 成人国产在线观看| 国产精品色婷婷| 91同城在线观看| 五月婷婷综合激情|