Можете ли вы объявить переменную как структуру внутри основного в C? - PullRequest
1 голос
/ 16 марта 2020

Я посмотрел в Интернете, но ничего не могу найти ...

Я знаю, как сделать структуру и все. Мне просто интересно узнать, можете ли вы сделать что-то подобное.

struct Complex{
    float real;
    float imag;
} a, b, c;

Теперь у меня есть структура для комплексных чисел a, b и c.

Вопрос в следующем: мне нужно постоянно размещать здесь новые переменные? Или я могу сделать что-то вроде:

Complex d;

и сделать d новой сложной переменной для структуры. (Это не работает; я попробовал это, поэтому мне интересно, можно ли это сделать другим способом.)

Ответы [ 3 ]

3 голосов
/ 16 марта 2020

Ваш код выполняет две функции:

  • Создает тип структуры с именем struct Complex
  • Создает три переменные этого типа.

Однако вам не нужно и то и другое одновременно. Вы можете объявить тип структуры:

struct Complex{
    float real;
    float imag;
};

Затем создать переменные этого типа:

struct Complex a, b, c, d;

Обратите внимание, что имя структуры - struct Complex. Complex будет именем другого типа, созданного с помощью typedef.

1 голос
/ 16 марта 2020

Вместо этого вы можете использовать typedef:

typedef struct {
    float real;
    float imag;
} Complex;

Обратите внимание, что нам не нужно писать что-то после struct, так как мы используем typedef Тогда, если мы хотим объявить переменную Complex типа, мы можем просто написать так:

Complex a, b, c, d; /* or any other variable*/
0 голосов
/ 16 марта 2020

Это отвечает на ваш вопрос?

#include <stdio.h>
int main(void)
{
    struct Complex
    {
        float real;
        float imag;
    } a, b, c;
    struct Complex d = (struct Complex) {.real=3.14, .imag=-2.8};
    printf("Value d: {.real = %.2f, .imag = %.2f }\n", d.real, d.imag);
    return 0;
}

IDEOne Link

Вывод:

Success #stdin #stdout 0s 4380KB
Value d: {.real = 3.14, .imag = -2.80 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...