简单的 C 程序错误

Posted

技术标签:

【中文标题】简单的 C 程序错误【英文标题】:Simple C program error 【发布时间】:2013-11-13 10:55:21 【问题描述】:

我在这里找不到任何错误。该程序的目的是计算数组元素及其总和的所有可能组合。我正在尝试编写一个程序,它将返回一个元素数组,其中下一个元素不等于任何前一个元素或任何先前元素组合的总和。我是这样开始的,遇到了一个错误:它说程序已经停止工作......

#include <stdio.h>
int m[20];

void initm(int x[]) 
    for(int i=0; i<20; i++) 
        m[i]=i;
    


void sorter(int x[]) 
    for(int i=0; i<20; i++) 
        for(int j=0; j<20; j++) 
            /* nested for loop to get all possible combinations */
            printf("%d===%d===%d", x[i], x[j], x[i]+x[j]);  
        
      


int main() 
    initm(m[20]);
    sorter(m[20]);
    return 0;

【问题讨论】:

"I can't find any errors here" 你看过编译器的输出信息了吗? 【参考方案1】:

m[20] 读取了一个int 超出数组末尾的一个元素,所以

initm(m[20]);
sorter(m[20]);

应该是

initm(m);
sorter(m);

【讨论】:

这意味着可能存在许多被 OP 忽略的编译器警告。

以上是关于简单的 C 程序错误的主要内容,如果未能解决你的问题,请参考以下文章

简单C语言,程序显示没错误,但是总是运行不出来,为啥呢?

一个简单的OpenGL程序编译错误

简单的 C 程序。从函数返回的字符串导致错误

最简单的字符串数组c程序上的分段错误(核心转储)

段错误的最小 C/C++ 程序? [复制]

运行c程序的过程和简单的c程序结构