2015-04-27 3 views
1

Это мой код инициализации массива:Ошибка выполнения при инициализации массива в с

#include <stdio.h> 

int main (void) { 
    int x, n; 

    //   0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
    int *array = {2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 25, 29, 30, 34, 35, 38}; 
    n = sizeof(array)/sizeof(int); 

    for (x=0; x<n; x++) { 
     printf("%i: %i - ", x, array[x]); 
    } 

    printf("\nArray's length: %i", n); 
    return 0; 
} 

Я не понять, почему этот простой код shows this message:

Runtime Ошибка

Заранее спасибо.

+2

'INT * array' является' 'INT *, указатель на' int'. Вы хотите использовать 'int array [16]'. Вы можете оставить 16 и дать компилятору выяснить размер. –

+1

Вы должны обязательно проверить свои предупреждения. – Quentin

ответ

1

Изменить это: int *array = на это: int array[] =. Идеальная ссылка: https://ideone.com/ULH7i6. Смотрите это тоже: How to initialize all members of an array to the same value?

+0

Я думал, что это то же самое. Разве оба _array [] _ ​​и ​​_ * array_ не возвращают адрес? –

+0

@WashingtonGuedes, Нет. Это не то же самое. Pointer! = Array –

+0

В любом случае, большое спасибо, это меня разочаровывало. –

-2

Ваше объявление массива не правильно .... просто изменить декларацию

int *array[] = {2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 25, 29, 30, 34, 35, 38}; 

здесь код коррекции!

#include <stdio.h> 

int main (void) { 
int x, n; 

//   0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
int *array[] = {2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 25, 29, 30, 34, 35, 38}; 
n =sizeof(array)/sizeof(int); 

for (x=0; x<n; x++) { 
    printf("%i: %i - ",x,array[x]); 
} 

printf("\nArray's length: %i", n); 
return 0; 
} 
+0

скажите мне, есть ли у вас больше проблем! –

1

Что вы имели в виду, когда заявили следующую строку?

int *array = {2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 25, 29, 30, 34, 35, 38}; 

Что приходит на ум, когда я вижу что-то вроде этого вы пытаетесь работать с массивом с использованием арифметики указателей, что делает для многих забавных вопросов интервью (и только прохладными в целом: P). С другой стороны, вы можете просто использовать возможность создания массивов с использованием литералов массива.

Ниже приведено описание различных типов массивов, с которыми вы, возможно, пытаетесь работать. Я знаю, что вы выбрали ответ, но это может быть полезно для вас, если вы пытаетесь выполнить что-то еще.

C pointer to array/array of pointers disambiguation

+0

Большое спасибо .. это мне очень поможет –

Смежные вопросы