处理二维数组时的总线错误

时间:2011-11-09 22:10:40

标签: c arrays

以下是我的代码:

#include <stdio.h>
#include <math.h>


void main () {
    int my_data[4][500];

    int myDataBinary[500] = {0};
    int index1 =0;

    my_data[0][1] = 1; 
    my_data[0][3] = 3; 
    my_data[0][5] = 9;
    my_data[0][4] = 10;

    for(int i=0; i<sizeof(my_data)/sizeof(int);i++)
    {   
        if(my_data[0][i] > 0){
            index1 = my_data[0][i];
            myDataBinary[index1] = 1;
            printf("my data %d = %d\n",index1,myDataBinary[index1]);
        }
    }
}

我看到的是:

my data 1 = 1
my data 3 = 1
my data 10 = 1
my data 9 = 1
Bus error

我猜这个错误最后是因为我在“for循环”中使用的sizeof。我想只为我的二维aray中的那些值运行我的循环。知道我哪里出错了。

1 个答案:

答案 0 :(得分:1)

而不是:

for(int i=0; i<sizeof(my_data)/sizeof(int);i++)

你可能想要:

for(int i=0; i<sizeof(my_data[0])/sizeof(int); i++)