2017-02-18 3 views
-1

Я определил в заголовке файла структуру, и это массив так:Декларирование и изменение статического массива структуры -CPP

struct 
{ 
int a; 
char* b; 
} S_element, s_array*; 

static s_array my_data[3] = {1,"first", 2, "second", 3, "third"  }; 

В исходном коде включают такой заголовок и этот массив. Я пытаюсь изменить значение строковой переменной b внутри структуры элемента массива, но программа сбой в этой точке, когда я пытаюсь изменить значение struct member-b.

Извините за синтаксические ошибки в этом вопросительном коде. На данный момент у меня есть доступ только к мобильному телефону.

Я не уверен в концепциях, связанных с статическими элементами, и инициализирую массив таким образом без фигурных скобок для отдельных элементов структуры.

+0

C или C++? Выберите один язык программирования, пожалуйста! –

ответ

1

писать struct{...}a; такой же, как struct name{...}; name a;

вы не можете писать static s_array my_data[3]s_array, потому что это структура, а не тип.

также, это не способ перезапуска массива struct.

изменение:

typedef struct{ 

int a; 

char* b; 

} S_element, *s_array; 

static S_element my_data[3] = {{1,"first"}, {2, "second"}, {3, "third"}}; 

видеть, что я изменил S_element, потому что s_array является указателем, а не структура.

также, не использовать static в заголовках, только в функциях.

+0

_because s_array - это структура, а не тип_ ... Что? O.o – skypjack

+0

Спасибо, что указали на проблемы в моем коде. Теперь внутри функции я просматриваю каждый элемент массива и пытаюсь переназначить другое значение для членов структуры. Но программа срабатывает, когда я это делаю. Значения в статическом члене доступны только для чтения? –

+0

_because s_array - это структура, а не тип_ означает, что вы не можете писать: 'struct {...} a; a b; ' –