已知:char c[8] = "beijing", *s = c; int i; 則下面的輸出語句中,錯誤的是 _____。選擇一項:A. printf("%s\n", s);B. for (i = 0; i < 7; i++) printf("%c", s[i]);C. printf("%s\n", *s); D. for (i = 0; i < 7; i++) printf("%c", c[i]);答案選C.有幾個點不理解。第一,剛學的指針,我的理解就是指針指向地址,然后地址是一串數(shù)字,可為什么這個題是 char *s。第二,s是指向c 的指針,那不是應(yīng)該指向c0的地址嗎,為什么A選項輸出是對的。第三,我根據(jù)答案倒著推,意思是s就是一個和c一模一樣的字符數(shù)組了?那s前面的*是干嘛的。。。以上,我可能沒認真聽嗎。。。。。。
2 回答

喵喔喔
TA貢獻1735條經(jīng)驗 獲得超5個贊
指針是地址,而不是指向地址,指針指向它的值(地址編號)里存放的變量。printf在%s控制下需要一個char *型指針與對應(yīng),一個一個地輸出從這個指針開始的字符值,直到遇到'\0'時停止。C選項中的*s是c數(shù)組的第一個元素即字母b的值,所以錯誤。寫成s就對了。
- 2 回答
- 0 關(guān)注
- 769 瀏覽
添加回答
舉報
0/150
提交
取消