我在下面的声明中有点混淆 - 你能帮忙清理一下吗?
typedef struct {
int a;
int b;
} example;
Run Code Online (Sandbox Code Playgroud)
还有这个
struct something {
int a;
int b;
} ob;
Run Code Online (Sandbox Code Playgroud)
我不确定下面甚至是什么意思?
typedef struct foo {
int a;
int b;
} bar;
Run Code Online (Sandbox Code Playgroud) 这是代码 -
int main() {
char c = 'A';
char *p = &c;
char *str = "Hello";
printf("%s %s", p, str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出如下
A????? Hello
A?*??? Hello
A?z??? Hello
A???? Hello
A????? Hello
A??y?? Hello
A?*?? Hello
A?Z??? Hello
A?*+?? Hello
A?l?? Hello
A?z?? Hello
A??i?? Hello
A???? Hello
Run Code Online (Sandbox Code Playgroud)
现在我知道%s试图寻找'\ 0'来停止打印,这就是char指针str完美输出的原因.
但我想知道的是,当我们将char*指向单个字符时,它会在实际char之后打印一些垃圾值 - 它如何决定每次丢失4或5个垃圾值后停止?这项安全检查如何运作?据他所知,"?" 可能是字符串的一部分.