EasyC++13, предварительное изучение структур

GitHub C++

Всем привет, меня зовут Тан Лян.

Это 13-я статья из серии EasyC++, в которой мы поговорим о структурах в C++.

Учащиеся, которые хотят улучшить качество чтения, могут нажать, чтобы посетитьрепозиторий github.

структура

определить структуру

Массивы могут хранить несколько переменных одного типа, но что, если мы хотим хранить несколько переменных разных типов? Допустим, мы хотим сохранить имя, возраст, пол, результаты тестов, эти переменные могутstring, int, floatВсе, очевидно, вы не можете использовать массивы.

Чтобы удовлетворить такие требования к хранилищу, мы можем использовать структуру (struct) в C++. В одной и той же структуре мы можем определить множество различных типов переменных для удовлетворения наших различных потребностей. Если мы хотим хранить несколько таких элементов, мы также можем определить их как массив.

Структуры и классы очень близки, поэтому понимание структур очень полезно для понимания объектной ориентации. Хотя объектная ориентация обычно не используется в соревнованиях по алгоритмам, можно сказать, что разработчикам необходимо ее изучить. В учебнике по C++ говорится, что структуры являются краеугольным камнем ООП C++ (объектно-ориентированного программирования).

мы используем ключевые словаstructопределить структуру:

struct student {
	string name;
    bool	gender;
    double scores;
};

Указывает, что структура определена, имя ее типа — student, а содержимое, заключенное в фигурные скобки, — это переменные-члены структуры. Обратите внимание, что student — это имя типа, что означает, что мы можем использовать его для определения переменных типа student:

student xiaoming;
student john;

мы можем использовать.для доступа к элементам внутри структуры:

cout << john.name << endl;

structЕсть два способа написать определение : либо вне основной функции, либо внутри основной функции. как:

// 写法1
struct student {
	string name;
    bool	gender;
    double scores;
};

int main() {
    // do something
    return 0;
}

// 写法2
int main() {
    struct student {
        string name;
        bool	gender;
        double scores;
    };
    // do something
    return 0;
}

Логически два способа абсолютно одинаковы, только первый способstudentТипы могут использоваться любой функцией, но если они написаны внутри основной функции, они могут использоваться только внутри основной функции.

Структурные переменные также могут быть определены внутри функций, а переменные, определенные снаружи, являются общими для всех функций, то есть являются глобальными переменными. Учебник по C++ пропагандирует максимально возможное использование внешних структур.

Метод инициализации

Как и массивы, мы можем разделить их запятыми в фигурных скобках, например:

student xiaoming = {"xiaoming", 1, 3.5};

Компилятор присвоит «сяомин» имени, 1 — полу и 3,5 — баллу по порядку. Мы также можем использовать метод инициализации списка C++11, чтобы опустить средний знак равенства:

student xiaoming {"xiaoming", 1, 3.5};

массив структур

После определения структуры мы также можем определить массив структур, как базовый тип переменной.

struct student {
	string name;
    bool	gender;
    double scores;
};

student sts[10];

Для массивов структур мы также можем использовать инициализацию списка для инициализации.Поскольку инициализация самой структуры использует фигурные скобки, инициализация массива будет использовать вложенность фигурных скобок, например:

student sts[2] = {
    {"xiaoming", 1, 3.6},
    {"john", 1, 5.2}
};