相关疑难解决方法(0)

为什么数组的地址等于它在C中的值?

在下面的代码中,指针值和指针地址按预期不同.

但数组值和地址不行!

怎么会这样?

产量

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 arrays pointers

179
推荐指数
5
解决办法
7万
查看次数

用scanf读取字符串

我对某些事情有点困惑.我的印象是,读取C字符串的正确方法与之scanf()相符

(不要介意可能的缓冲区溢出,这只是一个简单的例子)

char string[256];
scanf( "%s" , string );
Run Code Online (Sandbox Code Playgroud)

但是,以下似乎也有效,

scanf( "%s" , &string );
Run Code Online (Sandbox Code Playgroud)

这只是我的编译器(gcc),纯粹的运气还是别的什么?

c scanf

136
推荐指数
1
解决办法
50万
查看次数

如果'&'没有放入'scanf'语句会怎么样?

我去了一个采访中,我被问到这个问题:

您对以下内容有何看法?

int i;
scanf ("%d", i);
printf ("i: %d\n", i);
Run Code Online (Sandbox Code Playgroud)

我回答了:

  • 该程序将成功编译.
  • 它将错误地打印数字,但它将一直运行直到结束而不会崩溃

我做出的回应是错误的.我不堪重负.

在那之后他们解雇了我:

在某些情况下,程序会崩溃并导致核心转储.

我不明白为什么程序会崩溃?谁有人解释我的原因?任何帮助赞赏.

c scanf stdio

31
推荐指数
5
解决办法
4243
查看次数

标签 统计

c ×3

scanf ×2

arrays ×1

pointers ×1

stdio ×1