【例2.17】分析下面程式的執行結果。
#include void main ( )
這個程式執行後給出乙個奇怪的輸出「50,1250」。「a*p」的表示式是對的,即「225=50」。但「bx/p」應是「50*25/25=50」,為何變成1250了呢?原來程式多了乙個「;」號,使計算c的表示式變為
c=b*x;
也就是原來「/」被作為注釋語句的開始,一直遇到「/」才結束注釋。如果沒有多出的符號「;」,編譯系統會給出如下錯誤資訊。
error c2146: syntax error : missing ';' before identifier 'printf'
這個資訊也夠人琢磨的,其實是「/」遇到「*」,有理說不清。
在碰到含有指標的表示式時,在前後留乙個空格就可以有效地避免這類問題。例如,把這兩條語句改為
b=a p;
c=bx / p;
或者用括號明確表示式的含義,即
b=a(p);
c=bx/(p);
這樣既容易理解,又能正確編譯。
【例2.18】下面的程式實現將輸入字串給t的內容複製到s中,這個程式能正確實現將輸入「you and we」複製到s中嗎?
#include #include void strcpy1 ( char *, char *);
void main ( )
void strcpy1 ( char *s, char *t)
【解答】不能。理由如2.7節所述。解決的辦法之一是使用gets函式。如果需要保留t,可以像下面這樣實現。
#include #include void strcpy1 ( char *, char *);
void main ( )
void strcpy1 ( char *s, char *t)
如果不需要保留t,可以直接實現複製操作,實現的程式如下。
#include #include void strcpy1 ( char *, char *);
void main ( )
void strcpy1 ( char *s, char *t)
c語言010 指標
include int main 注意 p前面的型別決定了取位址的能力。如果是int型別的,就說明在32平台下可以取址能力是4個位元組。2 指標的本質就是儲存乙個位址,在32位的系統上,所有程式的記憶體位址都用4個位元組表示,所以不管是什麼型別的指標。指標大小都佔4個位元組。稱之為間接引用,表示根據...
2018 5 1指標c語言
是人類的,人類 肯定是給我隨便用,不然 抽他。include include pragma pack push,1 struct s1 a char ch pragma pack pop static void alloc void static void fill void p static vo...
C語言(九) 指標(3)指標與const
表示一旦得到了某個變數的位址,不能再指向其他變數 int i 0 int const q i q是 const q 20 ok q error表示不能通過指標去修改這個變數 int i 0 int j const int p i const int p 等同於 int const p p 20 er...