char (Справочник по C#)
Ключевое слово типа char — это псевдоним для типа структуры System.Char .NET, представляющий символ UTF-16 в Юникоде.
| Type | Диапазон | Размер | Тип .NET |
|---|---|---|---|
| char | От U+0000 до U+FFFF | 16 разрядов | System.Char |
Значение по умолчанию для типа char — \0 , то есть U+0000.
Тип char поддерживает сравнение, проверку равенства, а также операции инкремента и декремента. Кроме того, для операндов char арифметические и побитовые логические операторы выполняют операцию с соответствующими кодами символов и создают результат типа int .
Тип string представляет текст как последовательность значений char .
Литералы
Значение char можно указать следующим образом:
- символьный литерал;
- escape-последовательность Юникода, то есть символы \u , за которыми следует шестнадцатеричное представление кода символа из четырех символов;
- шестнадцатеричная escape-последовательность, то есть символы \x , за которыми следует шестнадцатеричное представление кода символа.
var chars = new[] < 'j', '\u006A', '\x006A', (char)106, >; Console.WriteLine(string.Join(" ", chars)); // output: j j j j
Как показано в предыдущем примере, можно также привести значение кода символа к соответствующему значению char .
В случае escape-последовательности Юникода необходимо указать все четыре шестнадцатеричные цифры. То есть \u006A — допустимая escape-последовательность, а \u06A и \u6A нет.
В случае шестнадцатеричной escape-последовательности начальные нули можно опустить. То есть \x006A , \x06A и \x6A — допустимые escape-последовательности, соответствующие одному символу.
Преобразования
Тип char неявно преобразуется в следующие целочисленные типы: ushort , int , uint , long и ulong . Он также может быть неявно преобразован во встроенные числовые типы с плавающей запятой: float , double и decimal . Он явно преобразуется в целочисленные типы sbyte , byte и short .
Неявные преобразования из других типов в тип char не предусмотрены. Но любой целочисленный тип или числовой тип с плавающей запятой явно преобразуется в char .
Спецификация языка C#
Дополнительные сведения см. в разделе Целочисленные типы в статье Спецификации языка C#.
См. также
- справочник по C#
- Типы значений
- Строки
- System.Text.Rune
- Кодировка символов в .NET
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
CHAR (Transact-SQL)
Возвращает однобайтовый символ с указанным целочисленным кодом, как определено в наборе символов и кодировке параметров сортировки по умолчанию для текущей базы данных.
Синтаксис
CHAR ( integer_expression )
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
integer_expression
Целое число от 0 до 255. CHAR возвращает значение NULL для целочисленных выражений, которые выходят за пределы этого входного диапазона или не представляют полный символ. CHAR также возвращает значение NULL , если символ превышает длину возвращаемого типа. Многие распространенные кодировки используют ASCII в качестве подмножества и возвращают тот же символ для целочисленных значений в диапазоне от 0 до 127.
Некоторые кодировки, такие как Юникод и Shift Japanese Industrial Standards (Shift JIS), содержат символы, которые могут быть представлены в однобайтовой схеме кодирования, но требуют многобайтового кодирования. Дополнительные сведения о кодировках см. в статье Однобайтовые и многобайтовые кодировки.
Типы возвращаемых данных
char(1)
Замечания
Функция CHAR может использоваться для вставки управляющих символов в символьные строки. В этой таблице показаны некоторые часто используемые управляющие символы.
| Управляющий символ | Значение |
|---|---|
| TAB | char(9) |
| Перевод строки | char(10) |
| Возврат каретки | char(13) |
Примеры
А. Использование ASCII и CHAR для отображения значений ASCII из строки
В этом примере отображается значение ASCII и символ для каждого символа в строке New Moon .
SET TEXTSIZE 0; -- Create variables for the character string and for the current -- position in the string. DECLARE @position INT, @string CHAR(8); -- Initialize the current position and the string variables. SET @position = 1; SET @string = 'New Moon'; WHILE @position
----------- - 78 N ----------- - 101 e ----------- - 119 w ----------- - 32 ----------- - 77 M ----------- - 111 o ----------- - 111 o ----------- - 110 n
B. Использование функции CHAR для вставки управляющего символа
В этом примере используется выражение CHAR(13) , чтобы отображать имя и адрес электронной почты сотрудника в отдельных строках, когда результаты запроса возвращаются в виде текста. В этом примере используется база данных AdventureWorks2022.
SELECT p.FirstName + ' ' + p.LastName, + CHAR(13) + pe.EmailAddress FROM Person.Person p INNER JOIN Person.EmailAddress pe ON p.BusinessEntityID = pe.BusinessEntityID AND p.BusinessEntityID = 1; GO
Ken Sanchez ken0@adventure-works.com (1 row(s) affected)
C. Использование ASCII и CHAR для отображения значений ASCII из строки
В этом примере используется набор символов ASCII. В нем возвращается значение символа для шести разных числовых значений символов ASCII.
SELECT CHAR(65) AS [65], CHAR(66) AS [66], CHAR(97) AS [97], CHAR(98) AS [98], CHAR(49) AS [49], CHAR(50) AS [50];
65 66 97 98 49 50 ---- ---- ---- ---- ---- ---- A B a b 1 2
D. Использование функции CHAR для вставки управляющего символа
В этом примере используется CHAR(13) для получения сведений из файла sys.databases в отдельных строках, когда результаты запроса возвращаются в виде текста.
SELECT name, 'was created on ', create_date, CHAR(13), name, 'is currently ', state_desc FROM sys.databases; GO
name create_date name state_desc -------------------------------------------------------------------------------------------------------------------- master was created on 2003-04-08 09:13:36.390 master is currently ONLINE tempdb was created on 2014-01-10 17:24:24.023 tempdb is currently ONLINE AdventureWorksPDW2012 was created on 2014-05-07 09:05:07.083 AdventureWorksPDW2012 is currently ONLINE
Д. Использование функции CHAR для возврата однобайтовых символов
В этом примере используется целое и шестнадцатеричное значения в допустимом диапазоне кодировки ASCII. Функция CHAR может возвратить однобайтовый японский символ.
SELECT CHAR(188) AS single_byte_representing_complete_character, CHAR(0xBC) AS single_byte_representing_complete_character; GO
single_byte_representing_complete_character single_byte_representing_complete_character ------------------------------------------- ------------------------------------------- シ シ
F. Использование функции CHAR для возврата многобайтовых символов
В этом примере используется целое и шестнадцатеричное значения в допустимом диапазоне кодировки Extended ASCII. Функция CHAR возвращает значение NULL , так как параметр представляет только первый байт многобайтового символа. Двухбайтовый символ CHAR(2) не может быть частично представлен или разделен без операции преобразования. Отдельные байты двухбайтовых символов обычно не представляют допустимые значения типа CHAR(1).
SELECT CHAR(129) AS first_byte_of_double_byte_character, CHAR(0x81) AS first_byte_of_double_byte_character; GO
first_byte_of_double_byte_character first_byte_of_double_byte_character ----------------------------------- ----------------------------------- NULL NULL
G. Использование функции CONVERT вместо CHAR для возврата многобайтовых символов
В этом примере двоичное значение принимается в виде закодированного многобайтового символа, соответствующего кодовой странице текущей базы данных по умолчанию (подлежит проверке). Преобразование символов поддерживается более широко и может быть альтернативой работе с кодировкой на более низком уровне.
CREATE DATABASE [multibyte-char-context] COLLATE Japanese_CI_AI GO USE [multibyte-char-context] GO SELECT NCHAR(0x266A) AS [eighth-note] , CONVERT(CHAR(2), 0x81F4) AS [context-dependent-convert] , CAST(0x81F4 AS CHAR(2)) AS [context-dependent-cast]
eighth-note context-dependent-convert context-dependent-cast ----------- ------------------------- ---------------------- ♪ ♪ ♪
H. Использование типа NCHAR вместо CHAR для поиска символов UTF-8
В этом примере демонстрируется различие, которое проводится в стандарте Юникод между кодовой точкой символа и последовательностью кодовой единицы в заданной форме кодировки. Двоичный код, назначенный символу в классической кодировке, является его единственным числовым идентификатором. В отличие от этого последовательность байтов UTF-8, связанная с символом, является алгоритмическим кодированием назначенного ему числового идентификатора: кодовой точки. UTF-8 char и UTF-16 nchar — это разные формы кодировки с использованием 8-битных и 16-битных кодовых единиц одной и той же кодировки: базы данных символов Юникода.
; WITH uni(c) AS ( -- BMP character SELECT NCHAR(9835) UNION ALL -- non-BMP supplementary character or, under downlevel collation, NULL SELECT NCHAR(127925) ), enc(u16c, u8c) AS ( SELECT c, CONVERT(VARCHAR(4), c COLLATE Latin1_General_100_CI_AI_SC_UTF8) FROM uni ) SELECT u16c AS [Music note] , u8c AS [Music note (UTF-8)] , UNICODE(u16c) AS [Code Point] , CONVERT(VARBINARY(4), u16c) AS [UTF-16LE bytes] , CONVERT(VARBINARY(4), u8c) AS [UTF-8 bytes] FROM enc
Результирующий набор: Создается под параметрами _SC сортировки с дополнительной поддержкой символов.
Music note Music note (UTF-8) Code Point UTF-16LE bytes UTF-8 bytes ---------- ------------------ ----------- -------------- ----------- ♫ ♫ 9835 0x6B26 0xE299AB 127925 0x3CD8B5DF 0xF09F8EB5
Вся правда о целочисленных типах в C
Если вы уверенно сможете правильно ответить на эти вопросы, тогда эта статья не для вас. В противном случае десять минут, потраченные на её чтение, будут весьма полезны.
Предположу, что вы ответили
- Знаковые оба.
- Законны оба.
- 8.
- 2147483647. -2147483648.
- Конечно, Кэп.
А правильные ответы такие
- char — не регламентируется, int — знаковый.
- Для int — законно, а для char — нет.
- Не менее 8.
- 32767. -32767
- Вообще говоря, нет.
Про signed и unsigned
Все целочисленные типы кроме char , по умолчанию знаковые (signed).
С char ситуация сложнее. Стандарт устанавливает три различных типа: char , signed char , unsigned char . В частности, указатель типа (signed char *) не может быть неявно приведён к типу (char *) .
Хотя формально это три разных типа, но фактически char эквивалентен либо signed char , либо unsigned char — на выбор компилятора (стандарт ничего конкретного не требует).
Подробнее про char я написал в комментариях.
О размере unsigned char
Тип unsigned char является абстракцией машинного байта. Важность этого типа проявляется в том, что С может адресовать память только с точностью до байта. На большинстве архитектур размер байта равен 8 бит, но бывают и исключения. Например, процессоры с 36-битной архитектурой как правило имеют 9-битный байт, а в некоторых DSP от Texas Instruments байты состоят из 16 или 32 бит. Древние архитектуры могут иметь короткие байты из 4, 5 или 7 бит.
Стандарт С вынужден отказаться от допотопных архитектур и требует, чтобы байты были как минимум 8-битные. Конкретное значение ( CHAR_BIT 2) ) для данной платформы записано в заголовочном файле limits.h .
Размеры целочисленных типов в С
C переносимый, поэтому в нём базовые целочисленные типы ( char , short , int и др.) не имеют строго установленного размера, а зависят от платформы. Однако эти типы не были бы переносимы, если бы
их размеры были совершенно произвольные: стандарт устанавливает минимальные диапазоны принимаемых значений для всех базовых целочисленные типов. А именно,
- signed char: -127. 127 (не -128. 127; аналогично другие типы)
- unsigned char : 0. 255 (= 2 8 −1)
- signed short : -32767. 32767
- unsigned short : 0. 65535 (= 2 16 −1)
- signed int : -32767. 32767
- unsigned int : 0. 65535 (= 2 16 −1)
- signed long : -2147483647. 2147483647
- unsigned long : 0. 4294967295 (= 2 32 −1)
- signed long long : -9223372036854775807. 9223372036854775807
- unsigned long long : 0. 18446744073709551615 (= 2 64 −1)
Конкретные значения этих диапазонов для данной платформы указаны заголовочном файле limits.h .
Новые типы в С99
После того, как C99 добавил тип long long , целочисленных типов и путаницы стало ещё больше. Чтобы навести порядок, стандарт ввёл заголовочный файл stdint.h , где определяются типы вроде int16_t (равно 16 бит), int_least16_t (минимальный тип, способный вместить 16 бит), int_fast16_t (по крайней мере 16 бит, работа с этим типом наиболее быстрая на данной платформе) и т. п.
least- и fast-типы фактически являются заменой рассмотренных выше типов int , short , long и т. п. только вдобавок дают программисту возможность выбора между скоростью и размером.
От типов вроде int16_t , со строгим указанием размера, страдает переносимость: скажем, на архитектуре с 9-битным байтом может просто не найтись 16-битного регистра. Поэтому стандарт тут явно говорит, что эти типы опциональны. Но учитывая, что какой бы код вы ни писали, чуть менее чем во всех случаях целевая архитектура фиксирована даже в худшем случае с точностью до семейства (скажем, x86 или AVR), внутри которого, размер байта не может вдруг поменяться, то переносимость фактически сохраняется. Более того, типы вроде int16_t оказались даже более популярными, чем int_least16_t и int_fast16_t , а при низкоуровневом программировании (микроконтроллеры, драйверы устройств) и подавно, ибо там зачастую неопределённость размера переменной просто непозволительна.
1) Для удобства тройку архитектура+ОС+компилятор далее будем называть просто платформой.
2) Этот макрос правильнее было бы назвать UCHAR_BIT , но по причинам совместимости он называется так, как называется.
Тип данных C++ Char с примерами
Char — это тип данных C++, предназначенный для хранения букв. Char — это аббревиатура буквенно-цифрового символа. Это целочисленный тип данных, то есть значение сохраняется как целое число. Символ занимает объем памяти 1 байт. Он также хранит один символ.
Что такое ASCII?
Значение char интерпретируется как символ ASCII. Это похоже на то, как логические значения интерпретируются как истинные или ложные. ASCII — это аббревиатура американского стандартного кода обмена информацией. Он определяет особый способ представления английских символов в виде чисел.
Числа находятся в диапазоне от 0 до 127. Например, символ «а» эквивалентен коду ASCII 97.
Декларация Чар
Объявить переменная char в C++мы используем ключевое слово char. За этим должно следовать имя переменной. Переменная может быть инициализирована во время объявления. Значение переменной должно быть заключено в одинарные кавычки.
Синтаксис
Вот синтаксис объявления char в C++:
char variable-name;
Имя переменной — это имя, которое будет присвоено переменной.
Если значение должно быть присвоено во время объявления, вы можете использовать этот синтаксис:
char variable-name = 'value';
- Имя переменной — это имя переменной char.
- Значение — это значение, которое будет присвоено переменной char.
Пример 1:
#include using namespace std; int main()
Вывод:
Вот скриншот кода:

Пояснение к коду:
- Включение заголовочного файла iostream в наш код для использования его функций.
- Включение пространства имен std в наш код, чтобы использовать его классы без его вызова.
- Вызов функции main(). Логику программы следует добавить в тело этой функции.
- Объявите символьную переменную с именем Grade. Переменной также присвоено значение B. Обратите внимание, что значение переменной заключено в одинарные кавычки.
- Распечатайте значение переменной оценки рядом с другим текстом на консоли.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Печать значения ASCII
Как указано выше, каждый символ интерпретируется как символ ASCII. Вы можете получить значение ASCII любого символа. Вы просто передаете символ функции int(). Этот процесс называется приведением типов. Давайте продемонстрируем это:
Пример 2:
#include using namespace std; int main() < char ch; cout > ch; cout
Вывод:
![]()
Вот скриншот кода:

Пояснение к коду:
- Включение заголовочного файла iostream в наш код, чтобы использовать его функции.
- Включение пространства имен std в наш код, чтобы использовать его классы без его вызова.
- Вызов функции main(). Логику программы следует добавить в тело этой функции.
- Объявите переменную char с именем ch.
- Напечатайте текст на консоли. В тексте пользователю предлагается ввести значение переменной ch.
- Прочитайте ввод пользователя с клавиатуры и сохраните его в переменной ch.
- Напечатайте текст на консоли. Текст будет включать символ, введенный вами для переменной ch, значение этого символа в формате ASCII и другой текст.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Печать символьного значения
Учитывая значение ASCII, компилятор C++ может вернуть соответствующий символ. Вы объявляете переменную char и присваиваете ей целочисленное значение. Он будет преобразован в соответствующее значение символа.
Пример 3:
#include using namespace std; int main()
Вывод:
Вот скриншот кода:

Пояснение к коду:
- Включение заголовочного файла iostream в код. Затем мы будем использовать его функции, не получая ошибок.
- Включите пространство имен std в код. Мы будем использовать его классы, не вызывая его.
- Вызов функции main(). Логика программы должна находиться в теле этой функции.
- Объявите три символьные переменные x, y и z. Этим трем присвоены целочисленные значения 65, 66 и 67. Они будут рассматриваться как значения ASCII для символов.
- Распечатайте значение переменной x на консоли. Поскольку x был объявлен как символ, будет возвращен символ со значением ASCII 65, то есть A.
- Выведите значение переменной y на консоль. Поскольку y был объявлен как символ, будет возвращен символ со значением ASCII 66, то есть B.
- Распечатайте значение переменной z на консоли. Поскольку z был объявлен как символ, будет возвращен символ со значением ASCII 67, то есть C.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Ввод символов
Мы можем использовать функцию std::cin для чтения символа, введенного пользователем с клавиатуры. std::cin позволит вам вводить множество символов. Однако символьная переменная может содержать только один символ. Это означает, что только первый введенный символ будет извлечен и сохранен в символьной переменной. Остальное останется в буфере, используемом std::cin. Чтобы извлечь его, выполните последующие вызовы метода std::cin.
Пример 4:
#include using namespace std; int main() < cout > ch; cout > ch; cout
Вывод:
![]()
Вот скриншот кода:

Пояснение к коду:
- Включение заголовочного файла iostream в наш код для использования его функций.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Вызов функции main(). Логику программы следует добавить в тело этой функции.
- Напечатайте текст на консоли.
- Объявите символьную переменную с именем ch.
- Чтение ввода пользователя с клавиатуры. Входные данные будут сохранены в переменной ch. Поскольку пользователь будет вводить последовательность символов, например abc, только первый символ, a, будет сохранен в переменной ch.
- Вывод первого введенного символа, его кода ASCII и другого текста на консоль. Код ASCII определяется путем передачи символьной переменной в функцию int().
- Прочитайте следующий символ, введенный пользователем. Пользователю не потребуется вводить новый символ. Вместо этого он прочитает второй введенный символ, то есть b.
- Вывод второго введенного символа, его кода ASCII и другого текста на консоль. Код ASCII определяется путем передачи символьной переменной в функцию int().
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Преобразование символа в строку
Существует несколько способов преобразования символов в струны.
Давайте обсудим их:
#1: Использование конструктора, заданного строковым классом
Это можно сделать с помощью следующегоwing синтаксис:
string st(int n,char x);
Параметр n обозначает размер сгенерированной строки.
Параметр x — это символ, который нужно преобразовать в строку.
Функция возвращает строку.
Пример 5:
#include #include using namespace std; int main()
Вывод:
![]()
Вот скриншот кода:

Пояснение к коду:
- Включение заголовочного файла iostream в наш код для использования его функций.
- Включите файл заголовка строки в наш код, чтобы использовать его функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Вызов функции main(). Логику программы следует добавить в тело этой функции.
- Преобразуйте символ «C» в строку длиной 1 и присвойте полученную строку переменной st.
- Выведите значение строки st на консоль вместе с другим текстом.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
#2) Использование операторов std::string = и +=
Операторы = и += уже перегружены символами. Их можно использовать для преобразования определенного символа в строку.
Пример 6:
#include #include using namespace std; int main()
Вывод:
![]()
Вот скриншот кода:

Пояснение к коду:
- Включите заголовочный файл iostream в наш код, чтобы использовать его функции.
- Включите файл заголовка строки в наш код, чтобы использовать его функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Вызов функции main(). Логику программы следует добавить в тело этой функции.
- Создайте строковую переменную с именем st.
- Создайте символ с именем b со значением B.
- Присвойте значение A строке с именем st.
- Используйте оператор += для преобразования символов в строку.
- Выведите значение строки st на консоль вместе с другим текстом.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
#3: Использование методов std::string
Класс std::string содержит множество перегруженных функций, которые помогут вам преобразовать символы в строки.
Они включают в себя:
-
отталкивать Эта функция присваивает определенный символ концу строки. Он перегружен для персонажей. Требуется следующееwing синтаксис:
void push_back(char ch)
string& append(size_t n,char ch)
string& assign(size_t n,char ch);
string& insert(size_t p,size_t n,char ch);
Пример 7:
#include #include using namespace std; int main()
Вывод:

Вот скриншот кода:

- Включите заголовочный файл iostream в наш код, чтобы использовать его функции.
- Включите файл заголовка строки в наш код, чтобы использовать его функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Вызов функции main(). Логику программы следует добавить в тело этой функции.
- Создайте строковую переменную с именем st.
- Присвойте символ A концу строки.
- Выведите значение строки st на консоль вместе с другим текстом. Endl (конечная строка) перемещает курсор на следующую строку.
- Установите пустое значение строки st.
- Присвойте одиночный символ C строке с именем st.
- Выведите значение строки st на консоль вместе с другим текстом. Endl (конечная строка) перемещает курсор на следующую строку.
- Установите пустое значение строки st.
- Замените содержимое строки st одним символом D.
- Выведите значение строки st на консоль вместе с другим текстом. Endl (конечная строка) перемещает курсор на следующую строку.
- Вставьте один символ E в строку с именем st из ее первого индекса.
- Выведите значение строки st на консоль вместе с другим текстом. Endl (конечная строка) перемещает курсор на следующую строку.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
#4: Использование std::stringstream
Чтобы использовать этот класс для преобразования символа в строку, вставьте символ в поток.
Они будут записаны в строку.
Пример 8:
#include #include #include using namespace std; int main() < string st; stringstream myst; myst > st; cout
Вывод:
![]()
Вот скриншот кода:

Пояснение к коду:
- Включите заголовочный файл iostream в наш код, чтобы использовать его функции.
- Включите файл заголовка строки в наш код, чтобы использовать его функции.
- Включите заголовочный файл sstream в наш код, чтобы использовать его функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Вызов функции main(). Логику программы следует добавить в тело этой функции.
- Создайте строковую переменную с именем st.
- Создайте переменную потока с именем myst.
- Вставьте символ A в объект потока с именем myst.
- Преобразуйте объект потока в строку.
- Выведите значение строки st на консоль вместе с другим текстом. Endl (конечная строка) перемещает курсор на следующую строку.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Итоги
- char — это тип данных C++, используемый для хранения букв.
- C++ Char — это целочисленный тип данных, то есть значение сохраняется как целое число.
- Он занимает объем памяти 1 байт.
- C++ Char хранит только один символ.
- Значения Char интерпретируются как символы ASCII.
- ASCII — это аббревиатура американского стандартного кода обмена информацией.
- В нем говорится об особом способе представления английских символов в виде цифр.
- Чтобы увидеть значение ASCII символа, мы передаем его функции int().
- Чтобы увидеть соответствующее значение char значения ASCII, мы определяем ASCII как символ.
- Полиморфизм C++ на примере
- Как загрузить и установить C ++ IDE в Windows
- Программа Hello World на C++ с объяснением кода
- Переменные и типы C++: Int, Char, Float, Double, String и Bool.
- Учебник по C++ для начинающих: изучите основы программирования за 7 дней
- Разница между структурой и классом в C++
- Учебное пособие по C++ в формате PDF для начинающих (загрузить сейчас)
- Статическая функция-член в C++ (примеры)