每当我运行C代码时,就会返回Segmentation Fault

Mic*_*ley 2 c arrays

我是C的新手,来自Java.

我制作了以下简单的程序,编译很好,但每当我运行它时,nano会抛出一个分段错误.它的目的是遍历数组并让它在一个单独的行上打印出每个元素.

int main()
{
    int array[5] = {1, 2, 3, 4, 5};
    int i = 0;
    for (i = 0; i < sizeof(array); i++)
    {
            puts(array[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

flu*_*ter 8

首先,puts采用空终止字符串,而不是整数.其次,要确定数组中元素的数量,请使用sizeof(array)/sizeof(array[0]),因为sizeof(array)是数组的总字节数.第三,使用int main(void)标准C.试试这个:

int main(void)
{
    int array[5] = {1, 2, 3, 4, 5};
    int i = 0;
    for (i = 0; i < sizeof(array) / sizeof(array[0]); i++)
    {
            printf("%d\n", array[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Serdalis:在C99和C11中,如果执行从`main()`的结尾落下,它相当于`return 0;`.我不喜欢这个 - 但它同意C++ 98的决定(我也不喜欢这个决定),所以这并不完全公平.我也没有看到丢失括号的任何相关问题 - 期望人们模糊地熟悉运算符优先级表是不合理的,并且这里没有按位操作来混淆事物. (3认同)