#c #arrays
#c #массивы
Вопрос:
Ниже приведен мой код:
#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 = %dn",index1,myDataBinary[index1]);
}
}
}
Вывод, который я вижу, является:
my data 1 = 1
my data 3 = 1
my data 10 = 1
my data 9 = 1
Bus error
Я предполагаю, что эта ошибка в конце связана с sizeof, который я использую в «цикле for». Я хочу запускать свой цикл только для тех значений внутри моего двумерного массива. Есть идеи, где я ошибаюсь.
Комментарии:
1. На самом деле вы сами дали ответ — попробуйте использовать sizeof(my_data[0]) /sizeof(int). Или, (на мой взгляд), лучше использовать константы как для объявления массива, так и для цикла for.
Ответ №1:
Вместо этого:
for(int i=0; i<sizeof(my_data)/sizeof(int);i )
Вы, вероятно, хотите:
for(int i=0; i<sizeof(my_data[0])/sizeof(int); i )
Комментарии:
1. если я это сделаю, то получу только «мои данные 1 = 1, мои данные 3 = 1», но не мои данные 9 и не мои данные 10