在下面的代码中,指针值和指针地址按预期不同.
但数组值和地址不行!
怎么会这样?
产量
my_array = 0022FF00
&my_array = 0022FF00
pointer_to_array = 0022FF00
&pointer_to_array = 0022FEFC
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
int main()
{
char my_array[100] = "some cool string";
printf("my_array = %p\n", my_array);
printf("&my_array = %p\n", &my_array);
char *pointer_to_array = my_array;
printf("pointer_to_array = %p\n", pointer_to_array);
printf("&pointer_to_array = %p\n", &pointer_to_array);
printf("Press ENTER to continue...\n");
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我对某些事情有点困惑.我的印象是,读取C字符串的正确方法与之scanf()相符
(不要介意可能的缓冲区溢出,这只是一个简单的例子)
char string[256];
scanf( "%s" , string );
Run Code Online (Sandbox Code Playgroud)
但是,以下似乎也有效,
scanf( "%s" , &string );
Run Code Online (Sandbox Code Playgroud)
这只是我的编译器(gcc),纯粹的运气还是别的什么?
我去了一个采访中,我被问到这个问题:
您对以下内容有何看法?
Run Code Online (Sandbox Code Playgroud)int i; scanf ("%d", i); printf ("i: %d\n", i);
我回答了:
我做出的回应是错误的.我不堪重负.
在那之后他们解雇了我:
在某些情况下,程序会崩溃并导致核心转储.
我不明白为什么程序会崩溃?谁有人解释我的原因?任何帮助赞赏.