測試C語言功力的幾個問題

來源:文萃谷 2.63W

在實際的VC++教學中,發現很少有真正精通了C語言編程的學員,一般都有或多或少概念不是完全清楚的問題,特別是一些需要豐富的實戰經驗才能體會和明白的問題,如字符串,指針,類型轉換,定義指向函數的指針類型,這也是導致學習VC++困難的一個原因。下面就來和小編一起看看測試C語言功力的幾個問題吧。

測試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語言問題都將作出詳細的解釋和講解。

熱門標籤