我最近在向同事解释原因时感到尴尬
char a[100];
scanf("%s", &a); // notice a & in front of 'a'
Run Code Online (Sandbox Code Playgroud)
是非常糟糕的,稍微好一点的方法是:
char a[100];
scanf("%s", a); // notice no & in front of 'a'
Run Code Online (Sandbox Code Playgroud)
好.对于每个人都准备告诉我为什么不应该出于安全原因使用scanf:放松.这个问题实际上是关于"&a"与"a"的含义.
问题是,在我解释了为什么它不起作用之后,我们尝试了它(使用gcc)并且它起作用=)).我赶紧跑了
printf("%p %p", a, &a);
Run Code Online (Sandbox Code Playgroud)
它会打印两次相同的地址.
任何人都可以向我解释发生了什么事吗?