不知道粗體的部分是如何執行的,為什麼能印出整個字串,ptr(指標型別)不是等於&school[0]嗎?
#include <stdio.h>
void add10(char *ptr){
while(*ptr!='\0'){
*ptr=*ptr+10;
ptr++;
}
}
void display(char *ptr){
**printf("%s\n",ptr);**
}
int main(){
char school[]="I^_^ 9^_[d Kd_1[hi_jo AWe^i_kd] 9Wcfki";
char *ptr;
ptr=school;
add10(ptr);
display(ptr);
return 0;
}
為什麼能印出整個字串
因為 printf 就是「從傳入的指標開始印,一直印,印到 \0 才結束」
如果你想問「沒看到 \0 在那裡?」
就看這篇:使用兩個引號初始化,編譯器會自動在後面補’\0'(非常常用)
ptr(指標型別)不是等於&school[0]嗎?
1.是的, 除此之外 ptr 還等於 school
2.這是在「不執行 add10 那個 function」的前提之下
ptr 指標會指向 school 的第一個位置,丟進 printf()
後,該函式會把 buffer 的內容噴到 stdout 上面,直到讀到 null byte ('\0') 為止。
學習過程需要思考,也需要資料. 可以善用 man
函數庫是 Section 3, printf 可以用 man 3 printf
或是參考以下網址
https://man7.org/linux/man-pages/man3/printf.3.html
你也可以試試看用 putchar(), 逐一列印出來看看.多試試.