为什么编译时不抛出错误?

海特什
#include <stdio.h>

int main()
{
  int i = 0;
  int *a;
  do
    {
      scanf("%d",&a[i]);
      i++;
    }
  while (a[i-1]!=-1);
}

此代码读取数字直到-1遇到。指针a未初始化,但代码仍然可以编译和运行而没有任何错误。为什么?这可以是一种在不声明其大小的情况下初始化数组的方法吗?

阿尔克

这可以是一种在不声明其大小的情况下初始化数组的方法吗?

不。

所有int *a;做,如果定义一个指针int,这,不被初始化,点的地方,“无门”,为“无效”的记忆。

任何对[]-operator 的调用,在a没有事先a指向任何有效内存的情况下(例如你的代码所做的 OP)都会调用未定义的行为,从那时起,从崩溃到看似正常工作,任何事情都可能发生。


假设“声明”实际上是指“定义”定义具有“未知”大小的数组的唯一方法是在数组定义时提供初始化器(具有众所周知的大小),如下所示:

int arr[] = {-1, 0, 42}; /* Defines arr to be an array of three ints. */

在创建之后右/初始化arr 三支一众所周知大小int

请注意,=上面符号与赋值运算符不同=以下代码将无法编译:

int arr[]; 
arr = {-1, 0, 42}; /* Invalid, as an array may not be assigned. */

为了让 GCC 对代码中所有可能可疑的内容更加健谈,在编译时传递以下选项:

-Wall -Wextra -pedantic -Wconversion

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

#include <mutex> 导致 bind() 函数调用在编译时抛出错误,为什么?

来自分类Dev

为什么在使用本地存储时抛出错误

来自分类Dev

将基础转换为派生类时,在编译时不抛出错误

来自分类Dev

将基础转换为派生类时,在编译时不抛出错误

来自分类Dev

为什么不编译器抛出一个错误说“不return语句”?

来自分类Dev

为什么qRegisterMetaType抛出错误?

来自分类Dev

为什么gStreamer从Waylandsink抛出错误?

来自分类Dev

为什么django passwordresetview抛出错误?

来自分类Dev

为什么我的脚本抛出错误?

来自分类Dev

为什么qRegisterMetaType抛出错误?

来自分类Dev

为什么getSafeHTML()抛出错误?

来自分类Dev

尝试抛出错误,但为什么呢?

来自分类Dev

C ++:如果括号为空,为什么不抛出错误对象?

来自分类Dev

为什么在使用#define声明int的vector时没有抛出错误

来自分类Dev

为什么在使用find / findmany时lumen / laravel抛出错误“传递的参数太少”?

来自分类Dev

为什么控制台在使用模块时抛出错误?

来自分类Dev

为什么当我调用冠状病毒API时我的应用抛出错误?

来自分类Dev

为什么我们执行$ NULL =“ FOO”时Powershell不会抛出错误?

来自分类Dev

为什么在 UPDATE SET 中使用 AND 关键字时 MySQL 不会抛出错误

来自分类Dev

当给定参数“subplots=True/False”时,为什么 DataFrameGroupBy.boxplot 方法会抛出错误?

来自分类Dev

为什么用format()函数抛出异常而不是编译时错误?

来自分类Dev

为什么dart不会抛出编译时错误类型异常。运行时间?

来自分类Dev

为什么用format()函数抛出异常而不是编译时错误?

来自分类Dev

为什么当我的IDE没有时,javac会抛出编译错误?

来自分类Dev

为什么AngularJS抛出错误的扩充错误

来自分类Dev

为什么在接口案例1抛出编译时错误,但在案例2个编译成功

来自分类Dev

为什么VC ++编译器在复合运算符重载时给出错误?

来自分类Dev

为什么[[NSError alloc] init]; 在Xcode中抛出错误?

来自分类Dev

为什么IE在此行上抛出错误?

Related 相关文章

  1. 1

    #include <mutex> 导致 bind() 函数调用在编译时抛出错误,为什么?

  2. 2

    为什么在使用本地存储时抛出错误

  3. 3

    将基础转换为派生类时,在编译时不抛出错误

  4. 4

    将基础转换为派生类时,在编译时不抛出错误

  5. 5

    为什么不编译器抛出一个错误说“不return语句”?

  6. 6

    为什么qRegisterMetaType抛出错误?

  7. 7

    为什么gStreamer从Waylandsink抛出错误?

  8. 8

    为什么django passwordresetview抛出错误?

  9. 9

    为什么我的脚本抛出错误?

  10. 10

    为什么qRegisterMetaType抛出错误?

  11. 11

    为什么getSafeHTML()抛出错误?

  12. 12

    尝试抛出错误,但为什么呢?

  13. 13

    C ++:如果括号为空,为什么不抛出错误对象?

  14. 14

    为什么在使用#define声明int的vector时没有抛出错误

  15. 15

    为什么在使用find / findmany时lumen / laravel抛出错误“传递的参数太少”?

  16. 16

    为什么控制台在使用模块时抛出错误?

  17. 17

    为什么当我调用冠状病毒API时我的应用抛出错误?

  18. 18

    为什么我们执行$ NULL =“ FOO”时Powershell不会抛出错误?

  19. 19

    为什么在 UPDATE SET 中使用 AND 关键字时 MySQL 不会抛出错误

  20. 20

    当给定参数“subplots=True/False”时,为什么 DataFrameGroupBy.boxplot 方法会抛出错误?

  21. 21

    为什么用format()函数抛出异常而不是编译时错误?

  22. 22

    为什么dart不会抛出编译时错误类型异常。运行时间?

  23. 23

    为什么用format()函数抛出异常而不是编译时错误?

  24. 24

    为什么当我的IDE没有时,javac会抛出编译错误?

  25. 25

    为什么AngularJS抛出错误的扩充错误

  26. 26

    为什么在接口案例1抛出编译时错误,但在案例2个编译成功

  27. 27

    为什么VC ++编译器在复合运算符重载时给出错误?

  28. 28

    为什么[[NSError alloc] init]; 在Xcode中抛出错误?

  29. 29

    为什么IE在此行上抛出错误?

热门标签

归档