Ansi C init + set struct наведнъж

15 отговора 423 прегледа
#1

Ansi C init + set struct наведнъж

Тъп въпрос, надявам се на бърз отговор:

има ли начин в ansi стандарта на С да декларирам променлива от някакъв struct-тип и едновременно с дефиницията да задам стойности на отделните променливи в struct-а, т.е. да напиша следния код на 1 ред

card ace_of_spades;

ace_of_spades.color = black;
ace_of_spades.num = 1;

?

Отговор
в отговор на id #2

Re: Ansi C init + set struct наведнъж

Не. След дефиницията можеш да инициализираш отделните ел-ти с 1-на ст/ст напр: memset(&ace_of_spades,0,sizeof(ace_of_spades));

Отговор
в отговор на id #3

Re: Ansi C init + set struct наведнъж

дефинираш си я в един хедър файл, правиш си екземпляр от нея, инициализираш я и където ти потрябва си инклудваш файла.

Отговор
в отговор на id #4

Re: Ansi C init + set struct наведнъж

нещо такова?

struct s { int i; double j; };
/* ... */
struct s test = { 1, 3.4 };

Отговор
в отговор на нaбъpзo #5

Re: Ansi C init + set struct наведнъж

Хубу, но ако го напишеш 1000 пъти, и после се наложи да смниш структурата на struct-а? :)

Аз съм склонен да пиша по-подробно за да няма лоши изненади.

-------------
Special killer double trouble triple extra nicotine monster!

Редактирано от z_free на

Отговор
в отговор на нaбъpзo #6

Re: Ansi C init + set struct наведнъж

същото...

Отговор
в отговор на z_free #7

Re: Ansi C init + set struct наведнъж

така или иначе ако се наложи да смениш структурта на данните ще има много писане...
просто няма начин да дадеш стойности по подразбиране на полетата на структура в С, в С++ можеш да и скагаш конструктор, но това не е С++

Отговор
в отговор на SoulDeaD #8

Re: Ansi C init + set struct наведнъж

Да, забравих, че е C :) и веднага започнах да си мисля за разни клас-факторита.

иначе е вярно, че ако се сменя структурата така или иначе се пише доста, но ако е написано така:

card ace_of_spades;
ace_of_spades.color = black;
ace_of_spades.num = 1;

ще се пренаписва по-малко.

-------------
Special killer double trouble triple extra nicotine monster!
Отговор
в отговор на id #9

Re: Ansi C init + set struct наведнъж

Това има толкова общо с .НЕТ колкото и клиника малинов.

Отговор
в отговор на XaMaB #10

Re: Ansi C init + set struct наведнъж

Кликни на категорията в която е клуба за да видиш подробен преглед на всички, след това прочети какво пише под .НЕТ с малки букви.

не е клиника малинов

Отговор
в отговор на SoulDeaD #11

Re: Ansi C init + set struct наведнъж

абе всъщност ми трябва за едно домашно, и понеже трябва да го принтна исках да сгъстя кода малко, ужким да е по-стегнато.

иначе логично че ако пиша повече от 2 файла ще се придържам към твоят вариант.

Отговор
в отговор на id #12

Re: Ansi C init + set struct наведнъж

ASP.NET VB.NET C# J# и други които са идвали :)


Ако ти си видял пък ц, анси ц или квото и да е подобно мисля че е време да смениш дилъра.

Отговор
в отговор на XaMaB #13

Re: Ansi C init + set struct наведнъж

А да ме упътиш към някой клуб в ДИР, който да има повече общо с C

или може би C# е пълната му противоположност, може би са като дена и нощта?

Отговор
в отговор на id #14

Re: Ansi C init + set struct наведнъж

Пробвай в клуб "Програмисти". Тука не сме програмисти - С# и .НЕТ не са езици за програмиране. Можеш да продължиш да мислиш и ебеш, докато пишеш. Нищо общо с С.

--
Sometimes the sole purpose of your life is to serve as a warning to others.
Отговор
в отговор на Гypy #15

Re: Ansi C init + set struct наведнъж

>> С# и .НЕТ не са езици за програмиране.

За С# не съм съгласен :)

все пак, ако става въпрос за програмиране независимо от езика, не мисля, че е най-добре да инициализираш нещата с един ред

-------------
Special killer double trouble triple extra nicotine monster!
Отговор
в отговор на z_free #16

Re: Ansi C init + set struct наведнъж

а ако е написано така ще се пише още по-малко:
enum Color{
WHITE=0,
BLACK,
.....
};

така можеш да напишеш:
int i = BLACK // i=1
и не ти трябват никакви структури;

Отговор