当实际类型和外部类型不同时会发生什么?

桑迪普

我有两个文件:

交流电

extern char *s;
int main()
{
    puts(s);
}

和BC:

char s[] = "hello";

我同时编译它们,没有错误。但是程序在运行时崩溃。为什么?C语言规范的哪一部分说这是非法的?

迈克猫

你调用未定义的行为和程序发生崩溃。

引用N1256 6.2.7兼容类型和复合类型

1如果两个类型相同,则它们具有兼容类型。用于确定两种类型是否兼容的其他规则,在6.7.2中针对类型说明符进行了描述,在6.7.3中针对类型限定符进行了说明,在6.7.5中针对声明符进行了描述。[...]

2所有引用相同对象或函数的声明均应具有兼容的类型;否则,行为是不确定的。

在典型的环境中,程序运行时,存储的内容将被读取为指针,因为声明表明其中存在一个指针a.c,但实际上是字符串的一部分(如果指针的大小为4个字节),并且几乎没有成为有效指针的机会。因此,从该地址读取有很大的机会引起分段错误。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击提交按钮时会发生什么

来自分类Dev

在Linux内核中同时发生两个中断时会发生什么

来自分类Dev

当两个线程同时调用相同的静态方法时会发生什么?

来自分类Dev

未指定dbCreate时会发生什么?

来自分类Dev

循环结束时会发生什么?

来自分类Dev

达到墓碑限制时会发生什么

来自分类Dev

当stringWithFormat格式没有类型占位符但有参数时会发生什么

来自分类Dev

当我混合使用有符号和无符号类型时会发生什么?

来自分类Dev

Java-当我们在自己的类中创建类型为class的数据类型时会发生什么?

来自分类Dev

Python Redis pubsub:发布类型时会发生什么变化?

来自分类Dev

当线程尝试同时调用静态和非静态同步方法时会发生什么?

来自分类Dev

方法名称和块名称相同时会发生什么?

来自分类Dev

Python 3:对于类类型,调用in会发生什么?

来自分类Dev

合成子类的变量时会发生什么?

来自分类Dev

当参数和参数都匹配时,为什么会发生javac错误“(x)无法应用于(y)”?(内部类调用外部类方法)

来自分类Dev

升级Ubuntu时会发生什么?

来自分类Dev

在svm.scv()中同时使用“ class_weight”和“ c”参数时会发生什么?

来自分类Dev

两个SIP客户端同时登录时会发生什么

来自分类Dev

当脚本src不同时会发生异常,代码有什么问题?

来自分类Dev

当2台主机通过3次握手同时建立连接时会发生什么

来自分类Dev

VB.NET中的类型之间进行转换时会发生什么情况?

来自分类Dev

当stringWithFormat格式没有类型占位符但有参数时会发生什么

来自分类Dev

当您同时触摸两个按钮时会发生什么

来自分类Dev

当两个进程同时调用register()时会发生什么

来自分类Dev

暂停时会发生什么?

来自分类Dev

将用户定义的类型强制转换为char *时会发生什么情况?

来自分类Dev

同时连接 WiFi 和以太网会发生什么?

来自分类Dev

当表单上的两个按钮等同时实际会发生什么?

来自分类Dev

当我同时使用主机卷(绑定安装)和命名卷(一种 docker 管理的卷)时会发生什么?

Related 相关文章

  1. 1

    单击提交按钮时会发生什么

  2. 2

    在Linux内核中同时发生两个中断时会发生什么

  3. 3

    当两个线程同时调用相同的静态方法时会发生什么?

  4. 4

    未指定dbCreate时会发生什么?

  5. 5

    循环结束时会发生什么?

  6. 6

    达到墓碑限制时会发生什么

  7. 7

    当stringWithFormat格式没有类型占位符但有参数时会发生什么

  8. 8

    当我混合使用有符号和无符号类型时会发生什么?

  9. 9

    Java-当我们在自己的类中创建类型为class的数据类型时会发生什么?

  10. 10

    Python Redis pubsub:发布类型时会发生什么变化?

  11. 11

    当线程尝试同时调用静态和非静态同步方法时会发生什么?

  12. 12

    方法名称和块名称相同时会发生什么?

  13. 13

    Python 3:对于类类型,调用in会发生什么?

  14. 14

    合成子类的变量时会发生什么?

  15. 15

    当参数和参数都匹配时,为什么会发生javac错误“(x)无法应用于(y)”?(内部类调用外部类方法)

  16. 16

    升级Ubuntu时会发生什么?

  17. 17

    在svm.scv()中同时使用“ class_weight”和“ c”参数时会发生什么?

  18. 18

    两个SIP客户端同时登录时会发生什么

  19. 19

    当脚本src不同时会发生异常,代码有什么问题?

  20. 20

    当2台主机通过3次握手同时建立连接时会发生什么

  21. 21

    VB.NET中的类型之间进行转换时会发生什么情况?

  22. 22

    当stringWithFormat格式没有类型占位符但有参数时会发生什么

  23. 23

    当您同时触摸两个按钮时会发生什么

  24. 24

    当两个进程同时调用register()时会发生什么

  25. 25

    暂停时会发生什么?

  26. 26

    将用户定义的类型强制转换为char *时会发生什么情况?

  27. 27

    同时连接 WiFi 和以太网会发生什么?

  28. 28

    当表单上的两个按钮等同时实际会发生什么?

  29. 29

    当我同时使用主机卷(绑定安装)和命名卷(一种 docker 管理的卷)时会发生什么?

热门标签

归档