-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