将未初始化的2D Char数组传递给函数

时间:2012-12-09 20:40:59

标签: c multidimensional-array char parameter-passing

我正在尝试传递一个在main中声明的未初始化的二维char数组,并在函数中定义它。

我收到了分段错误,调试器说:

Program received signal SIGSEGV, Segmentation fault. 0x00000000004005af in initialize_world (array=0x7fffffffdff0, maxRows=6, maxCols=5) at ec.c:33 33 array[i][j]='-';

以下是原型,main和函数的代码:

#include <stdio.h>
#include <string.h>
#define ROWS 10
#define COLS 12


void initialize_world(char array[][COLS],int maxRows,int maxCols);

int main(int argc, char *argv[])  {
    char array[ROWS][COLS];
    int numOfRows, numOfCols; 

    numOfRows = 6;
    numOfCols = 5;

    initialize_world(array,numOfRows,numOfCols);

    return 0;
}   

void initialize_world(char array[][COLS],int maxRows,int maxCols)    {
    int i,j;   

    for(i=0; i < maxRows;i++)   {
        for(j=0; j < maxCols;i++)   {
            array[i][j]='-';
        }         
    }
}

1 个答案:

答案 0 :(得分:7)

平庸,你使用的是i而不是j:

for(j=0; j < maxCols;i++) 

错字错误,你应该写j ++,这就是你溢出的原因。