我不明白为什么在abc. 是什么原因?怎么只打印出来abc?谢谢!
#include <stdio.h>
int main()
{
char arr[3];
char(*ptr)[3]; // declare a pointer to an array
arr[0] = 'a';
arr[1] = 'b';
arr[2] = 'c';
ptr = &arr;
printf("%s\n", arr);
//printf("%s\n", ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
字符串需要以\0. 确保分配足够的空间来存储终止符。
#include <stdio.h>
int main()
{
char arr[4];
char(*ptr)[4]; // declare a pointer to an array
arr[0] = 'a';
arr[1] = 'b';
arr[2] = 'c';
arr[3] = '\0'; // <-- terminator
ptr = &arr;
printf("%s\n", arr);
//printf("%s\n", ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,使用char arr[4]您的数组中将包含随机内容。相反,如果你会使用
char arr[4] = "abc";
Run Code Online (Sandbox Code Playgroud)
这将导致
char arr[4] = {'a', 'b', 'c', 0};
Run Code Online (Sandbox Code Playgroud)
看看其他地方是如何填充的,0这样你就不必自己设置了。