在實際的VC++教學中,發現很少有真正精通了C語言程式設計的學員,一般都有或多或少概念不是完全清楚的問題,特別是一些需要豐富的實戰經驗才能體會和明白的問題,如字串,指標,型別轉換,定義指向函式的指標型別,這也是導致學習VC++困難的一個原因。下面就來和小編一起看看測試C語言功力的幾個問題吧。
int x=35; char str[10]; //問:strlen(str)和sizeof(str)的值分別是多少? strcpy(str,""/*共13個字母*/); //問:此時x和strlen(str)的值分別是多少? str="";//編譯能通過嗎? char *pstr; strcpy(pstr,""); //上句編譯能通過嗎?執行時有問題嗎? const char *p1; char * const p2; //上面兩句有什麼區別嗎? p1=(const char *)str; //如果是p1=str;編譯能夠通過嗎?明白為什麼要型別轉換?型別轉換的'本質是什麼? strcpy(p1,"abc");//編譯能夠通過嗎? printf("%d",str);//有問題嗎? pstr=3000;//編譯能過嗎?如果不行,該如何修改以保證編譯通過呢? long y=(long)pstr;//可以這樣做嗎? int *p=str; *p=0x00313200; printf("%s",str);//會是什麼效果?提示0x31對應字元'1',0x32對應字元'2'。 p=3000;//p+1的結果會是多少? char *pc=new char[100];//上述語句在記憶體中佔據幾個記憶體塊,怎樣的佈局情況? void test(char **p) { *p=new char[100]; }//這個編譯函式有問題嗎?外面要呼叫這個函式,該怎樣傳遞引數? //能明白typedef int (*PFUN)(int x,int y)及其作用嗎? |
對於許多類似的問題一般從書本上是看不到的,不通過大量的實踐與除錯是難以理解和令人困惑的,所以在本文中對於類似上述的C語言問題都將作出詳細的解釋和講解。