如果未在“ scanf”语句中添加“&”,将会发生什么?

阿什什(Ashish Ahuja)

我去接受采访时被问到以下问题:

您如何看待以下内容?

int i;
scanf ("%d", i);
printf ("i: %d\n", i);

我回答了:

  • 该程序将成功编译。
  • 它将打印错误的数字,但是它将一直运行到最后而不会崩溃

我的回答是错误的。我不知所措。

之后,他们解雇了我:

在某些情况下,该程序将崩溃并导致核心转储。

我不明白为什么程序会崩溃?谁能解释我的原因?任何帮助表示赞赏。

吊床

定义变量后,编译器会为该变量分配内存。

int i;  // The compiler will allocate sizeof(int) bytes for i

i 上面定义的未初始化,并且具有不确定的值。

要将数据写入分配给的内存位置i,您需要指定变量的地址。该声明

scanf("%d", &i);

用户会将int数据写入为分配的内存位置i

如果&未放置在前面iscanf则将尝试将输入数据i而不是写入存储位置&i由于i包含不确定的值,因此有可能包含与存储地址相同的值,或者包含超出存储地址范围的值。

在这两种情况下,程序都可能会出现异常行为,并导致未定义的行为。在这种情况下,可能会发生任何事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果将UIView作为自身的子视图添加,将会发生什么

来自分类Dev

如果激活Windows XP VM,将会发生什么?

来自分类Dev

如果我们在循环内的 if 语句中使用 return 1 会发生什么?

来自分类Dev

如果我未在视图中指定陈旧参数,会发生什么?

来自分类Dev

如果我从未在打开的文件流上调用`close`会发生什么?

来自分类Dev

如果未在lambda函数中取消超时处理程序,会发生什么情况?

来自分类Dev

如果我未在request.get()中指定用户代理,会发生什么?

来自分类Dev

如果用户定义的构造函数省略了数据成员的初始化,将会发生什么?

来自分类Dev

如果我在ReactJS或React Native的类的构造函数中使用setState()函数,将会发生什么?

来自分类Dev

如果我订阅了从未发布过的MQTT主题,将会发生什么?

来自分类Dev

如果用户定义的构造函数省略了数据成员的初始化,将会发生什么?

来自分类Dev

如果queryset在django通用视图中仅返回某些model值,将会发生什么?

来自分类Dev

如果我在登录时导出$ HOME变量,将会发生什么?

来自分类Dev

如果安装的RAM超过手册中指定的数量,将会发生什么?

来自分类Dev

如果我使用单个pubnub实例多次订阅一个频道,将会发生什么?

来自分类Dev

如果设备驱动程序未实现asyn写功能,将会发生什么?

来自分类Dev

如果我未在Activity onDestroy()中将Dagger 2组件设置为null,会发生什么情况?

来自分类Dev

如果未在res文件夹中放置所有可能大小的图标,会发生什么情况?

来自分类Dev

如果语句未在Katalon中满足特定条件

来自分类Dev

如果我将在两次更新之间(从终端)终止更新,将会发生什么情况?

来自分类Dev

如果计时器对象应在日历时间启动并且Matlab忙,将会发生什么?

来自分类Dev

如果为该类的一个对象动态分配内存作为参数,将会发生什么?

来自分类Dev

如果我将在两次更新之间(从终端)终止更新,将会发生什么情况?

来自分类Dev

如果选择的密码套件是ECDSA,但是选择的客户端证书是RSA,将会发生什么情况?

来自分类Dev

如果同一文件中有2个Appdelegate类,将会发生什么情况

来自分类Dev

如果具有相同名称的字段从两个来源(类和接口)继承,将会发生什么

来自分类Dev

如果从包含多个主机但不包含copySet选项的URI创建MongoClientURI,将会发生什么情况?

来自分类Dev

如果我以较大的块(即大于1024字节)上载大文件,将会发生什么情况?

来自分类Dev

如果您在Windows上使用23英寸和23.5英寸显示器,将会发生什么?

Related 相关文章

  1. 1

    如果将UIView作为自身的子视图添加,将会发生什么

  2. 2

    如果激活Windows XP VM,将会发生什么?

  3. 3

    如果我们在循环内的 if 语句中使用 return 1 会发生什么?

  4. 4

    如果我未在视图中指定陈旧参数,会发生什么?

  5. 5

    如果我从未在打开的文件流上调用`close`会发生什么?

  6. 6

    如果未在lambda函数中取消超时处理程序,会发生什么情况?

  7. 7

    如果我未在request.get()中指定用户代理,会发生什么?

  8. 8

    如果用户定义的构造函数省略了数据成员的初始化,将会发生什么?

  9. 9

    如果我在ReactJS或React Native的类的构造函数中使用setState()函数,将会发生什么?

  10. 10

    如果我订阅了从未发布过的MQTT主题,将会发生什么?

  11. 11

    如果用户定义的构造函数省略了数据成员的初始化,将会发生什么?

  12. 12

    如果queryset在django通用视图中仅返回某些model值,将会发生什么?

  13. 13

    如果我在登录时导出$ HOME变量,将会发生什么?

  14. 14

    如果安装的RAM超过手册中指定的数量,将会发生什么?

  15. 15

    如果我使用单个pubnub实例多次订阅一个频道,将会发生什么?

  16. 16

    如果设备驱动程序未实现asyn写功能,将会发生什么?

  17. 17

    如果我未在Activity onDestroy()中将Dagger 2组件设置为null,会发生什么情况?

  18. 18

    如果未在res文件夹中放置所有可能大小的图标,会发生什么情况?

  19. 19

    如果语句未在Katalon中满足特定条件

  20. 20

    如果我将在两次更新之间(从终端)终止更新,将会发生什么情况?

  21. 21

    如果计时器对象应在日历时间启动并且Matlab忙,将会发生什么?

  22. 22

    如果为该类的一个对象动态分配内存作为参数,将会发生什么?

  23. 23

    如果我将在两次更新之间(从终端)终止更新,将会发生什么情况?

  24. 24

    如果选择的密码套件是ECDSA,但是选择的客户端证书是RSA,将会发生什么情况?

  25. 25

    如果同一文件中有2个Appdelegate类,将会发生什么情况

  26. 26

    如果具有相同名称的字段从两个来源(类和接口)继承,将会发生什么

  27. 27

    如果从包含多个主机但不包含copySet选项的URI创建MongoClientURI,将会发生什么情况?

  28. 28

    如果我以较大的块(即大于1024字节)上载大文件,将会发生什么情况?

  29. 29

    如果您在Windows上使用23英寸和23.5英寸显示器,将会发生什么?

热门标签

归档