-1
我堅持指針的基礎知識的malloc這裏是我的代碼關於C指針
char *orderUp;
orderdup = malloc(10 * sizeof(char));
printf("enter string");
scanf("\n%s",orderdup);
printf("\n%s",orderdup);// gives scanned strings
printf("\n%s",*orderdup);// gives empty string
下面這個程序運行良好。我想知道爲什麼在printf語句中給出掃描的字符串。我的意思是它應該打印地址,但它爲什麼打印字符串,最後一個printf語句給出空字符串。
因爲'%s'正在使'printf'指望一個指針。 「Empty」字符串是您通過傳遞'char'來調用的未定義行爲的結果之一。 –
'* orderup'是一個單獨的'char',並且是您用malloc分配的內存的第一個位置。你應該得到'printf(「\ n%s」,* orderdup)這一行的編譯器警告;'因爲'%s'格式說明符需要一個char指針(即字符串),並且你提供了一個char。 – bruceg
「printf」的手冊頁不清楚嗎?你甚至讀過它嗎?你的C書說什麼?如果您從YouTube視頻或在線教程學習C:請問作者!他們顯然教了垃圾。 – Olaf