你认为发生了什么 名为 Name 的指针如何获取字符串的大小? 请逐步澄清
main()
{ char *name;
scanf("%s",name);
printf("hi %s ! n",name);
在 C 中,字符串的大小不会存储在任何地方(除非你这样做(。
"字符串",实际上是字符数组,以值 0 (' '
( 结尾。
这是一个惯例。
像printf
这样的库函数期望字符数组在某个时候有一个字节 0,以标记字符串的末尾。
代码
char *name = "hekal";
将在内存中转换为
-------------
|h|e|k|a|l|0|
-------------
最后一个0
是字节 0(整数 0(,而不是 ASCII 字符0
。
当然,您需要为name
腾出一些空间!
尝试
char name [100];
而不是char *name;
;