О, проклятый язык C

задняя часть

предисловие

Язык Си представляет собой抽象的,面向过程язык, язык C широко используется в底层开发, язык C играет незаменимую роль в компьютерной системе.Можно сказать, что язык C является основой программирования, то есть, независимо от того, какой язык вы изучаете, вы должны поставить язык C на первое место.首先要学должность. Следующий рисунок лучше иллюстрирует важность языка Си.

01

Видно, что язык C является языком низкого уровня, языком системного уровня, а операционная система написана на языке C, например Windows, Linux и UNIX. Если другие языки гламурны, то язык C — это душа, всегда такая неприхотливая.

Возможности языка С

Итак, поскольку язык C так важен, что нам нужно изучать? Мы не должны учиться только потому, что это важно, мы больше заботимся о том, что мы можем узнать и что мы можем получить после обучения.

дизайн языка C

Язык C был представлен в 1972 году компанией Bell Labs.丹尼斯·里奇(Dennis Ritch)и肯·汤普逊(Ken Thompson)Язык C был разработан, когда разрабатывалась операционная система UNIX. Язык C — это популярный язык, который идеально сочетает в себе теорию информатики и теорию инженерной практики, позволяя пользователям выполнять модульное программирование и проектирование.

Теория компьютерных наук: для краткости CS — это дисциплина, которая систематически изучает теоретические основы информации и вычислений, а также то, как они реализуются и применяются в компьютерных системах.

Язык C эффективен

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

Язык C является переносимым

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

Возможности языка С

  • Язык C является кратким языком, потому что дизайн языка C ближе к нижнему слою, поэтому ему не нужны многие функции, которые доступны только в языках высокого уровня, таких как Java и C#, а требования к написанию программы не очень строго.
  • Язык C имеет структурированные управляющие операторы Язык C является структурированным языком.Управляющие операторы, которые он предоставляет, имеют структурированные функции, такие как циклы for, операторы суждения if...else и операторы switch.
  • Язык C имеет богатые типы данных, включая не только традиционныеСимвол, целое число, число с плавающей запятой, массивТипы и другие типы данных, а также типы данных, которых нет в других языках программирования, например указатели.
  • Язык C может напрямую читать и записывать адреса памяти, поэтому он может реализовать основные функции языка ассемблера и напрямую управлять оборудованием.
  • Язык C работает быстро, а сгенерированный объектный код имеет высокую эффективность выполнения.

Давайте проиллюстрируем язык C на простом примере.

Начальный уровень программирования C

Давайте взглянем на очень простую программу на языке C, я компьютер Mac, поэтому я используюxcodeДля разработки, я думаю, не имеет значения, используется ли этот инструмент всеми.

первая программа на С

#include <stdio.h>

int main(int argc, const char * argv[]) {
    printf("Hello, World!\n");
  
  	printf("my Name is cxuan \n")
    
    printf("number = %d \n", number);
    
    return 0;
}

Вы можете не знать, что означает этот код, но не волнуйтесь, давайте сначала запустим его и посмотрим на результаты.

02

Эта программа выводитHello,World!иMy Name is cxuan, последняя строка — это результат выполнения программы, указывающий, есть ли в этой программе ошибка. Ниже мы объясним, что означает каждая строка кода.

Во-первых, первая строка#include <stdio.h>, эта строка кода содержит еще один файл, сообщающий компилятору, что нужно поместитьstdio.hвходит в текущую программу.stdio.hявляется стандартной частью пакета компилятора C и обеспечивает ввод с клавиатуры и вывод на дисплей.

Что такое стандартные пакеты C? C — процедурный императивный язык программирования общего назначения, разработанный Деннисом М. в 1972 году. Стандартная библиотека C представляет собой набор встроенных функций, констант и заголовочных файлов языка C, таких как , , и т. д. Эта библиотека будет служить справочным руководством для программистов на C.

Мы рассмотрим stdio.h позже, так что теперь вы знаете, что это такое.

Следующая строка кода в stdio.hmainфункция.

Программа на C может содержать одну или несколько функций.Функции являются фундаментальными для C, так же как методы являются фундаментальными для Java.main()представляет имя функции,intУказывает, что основная функция возвращает целое число. void указывает, что main() не принимает аргументов. Они будут подробно объяснены позже, просто помните, что int и void являются стандартными.ANSI CОпределите часть функции main() (при использовании компиляторов C до ANSI игнорируйте void).

После/*一个简单的 C 语言程序*/Обозначает комментарии, использование комментариев/**/чтобы указать, что содержание комментария находится между двумя символами. Эти символы могут улучшить читаемость программы.

Примечание. Комментарии предназначены только для того, чтобы помочь программистам понять смысл кода, компилятор игнорирует комментарии.

Ниже{, которая является открывающей фигурной скобкой, указывающей на начало тела функции, и закрывающей закрывающей фигурной скобкой в ​​конце}Указывает на конец тела функции.{ }В середине находится код, также известный как блок кода.

int numberозначает, что будет использоваться переменная с именем number, а числоintЦелочисленный тип.

number = 11Представляет переменную, которая присваивает число 11.

printf(Hello,world!\n);Указывает на вызов функции, этот оператор используетprintf()функция, отображаемая на экранеHello,world, функция printf() является одной из функций стандартной библиотеки C, которая может выводить результат работы программы на дисплей. в то время как код\nЗначит это换行, то есть начать новую строку и переместить курсор на следующую строку.

Затем следующая строка printf() такая же, как и строка выше, поэтому мы не будем говорить больше. Последняя строка printf() немного интересна, вы обнаружите, что есть%dсинтаксис, это означает использование целочисленной выходной строки.

Последняя строка блока кодаreturn 0, это можно рассматривать как конец основной функции, последняя строка это блок кода}, что означает конец программы.

Что ж, мы закончили писать первую программу на языке C. У вас есть более глубокое понимание C? Конечно нет. . . Вот где, продолжайте учиться.

Теперь мы можем обобщить его в несколько элементов программы на языке C, как показано на следующем рисунке.

03

Поток выполнения языка C

Что делает программирование на C языком высокого уровня, так это его способность читать и понимать мысли людей. Однако для того, чтобы иметь возможность работать в системеhello.cпрограммы, каждый оператор C должен быть преобразован другой программой в серию инструкций машинного языка низкого уровня. Эти инструкции упакованы как可执行对象程序Хранить в двоичном файле на диске. Целевая программа также называется исполняемым целевым файлом.

В системах UNIX преобразование исходных файлов в объектные файлы выполняется с помощью编译器завершенный.

gcc -o hello hello.c

Драйвер компилятора gcc читает из исходных файловhello.c, и перевести его в исполняемый файлhello. Этот процесс перевода может быть представлен следующим рисунком

04

Это полный процесс выполнения программы hello world, который включает в себя несколько основных компонентов:Препроцессор, компилятор, ассемблер, компоновщик, давайте разберем их один за другим.

  • 预处理阶段(Preprocessing phase), препроцессор начнет с#символ, измените исходную программу C.#include <stdio.h>Команда сообщит препроцессору, что нужно читать заголовочные файлы системы.stdio.hи вставьте его в программу как текст. А потом получил еще одну программу Chello.i, эта процедура обычно начинается с.iна конец.

  • После编译阶段(Compilation phase), компилятор преобразует текстовый файлhello.iперевести в текстhello.s, который включает в себя汇编语言程序(assembly-language program).

  • После компиляции汇编阶段(Assembly phase), этот шаг,汇编器 asпреобразует hello.s в машинные инструкции и упаковывает эти инструкции в可重定位的二进制程序(relocatable object program)в файле hello.c. Содержащиеся в нем 17 байтов — это кодировка инструкций функции main, и если мы откроем hello.o в текстовом редакторе, то увидим кучу тарабарщины.

  • Последний из них链接阶段(Linking phase), наша программа hello вызоветprintfфункция, которая является частью стандартной библиотеки C, предоставляемой компилятором C. Функция printf находится в файле с именемprintf.oфайл, это отдельный предварительно скомпилированный объектный файл, и этот файл должен быть связан с нашим hello.o,连接器(ld)обработает эту операцию слияния. В результате файл приветствия, который является исполняемым объектным файлом (или исполняемым файлом), готов к загрузке в память и выполнению системой.

Вы должны понимать, что делает система сборки

Для простой приветственной программы, приведенной выше, мы можем положиться на编译系统(compilation system)предоставить правильный и действительный машинный код. Однако для программистов, о которых мы говорили выше, есть несколько основных особенностей компилятора, которые необходимо знать.

  • 优化程序性能(Optimizing program performance), современный компилятор — эффективный инструмент для создания хорошего кода. Вам как программисту не нужно понимать, что происходит внутри компилятора, чтобы писать качественный код. Однако для того, чтобы писать эффективные программы на C, нам необходимо понимать базовый машинный код и процесс, с помощью которого компилятор преобразует различные операторы C в машинный код.
  • 理解链接时出现的错误(Understanding link-time errors), по нашему опыту, некоторые очень сложные ошибки в основном возникают на этапе связывания, особенно когда вы хотите создавать большие программные проекты.
  • 避免安全漏洞(Avoiding security holes), в последние годы,缓冲区溢出(buffer overflow vulnerabilities)Это виновник сетевых и интернет-сервисов, поэтому нам необходимо избежать этой проблемы.

Аппаратный состав системы

Чтобы понять, что происходит при запуске программы hello, нам нужно сначала иметь представление об аппаратном обеспечении системы. Ниже представлена ​​модель системного продукта Intel, поясним ее

05
  • 总线(Buses): По всей системе проходят наборы электрических каналов, называемых шинами, по которым байты информации передаются между компонентами. Обычно шина предназначена для передачи блоков байтов фиксированной длины, т.е.字(word). Количество байтов в слове (длина слова) — это базовый системный параметр, который варьируется от системы к системе. Сегодня большинство слов имеют размер 4 байта (32 бита) или 8 байтов (64 бита).
06
  • I/O 设备(I/O Devices): Устройства ввода/вывода являются связующим звеном между системой и внешним миром. На приведенной выше диаграмме представлены четыре типа устройств ввода-вывода: клавиатура и мышь для пользовательского ввода, дисплей для пользовательского вывода и дисковый накопитель для долговременного хранения данных и программ. С самого начала исполняемые программы хранятся на диске.

    Каждое устройство ввода-вывода, подключенное к шине ввода-вывода, называется控制器(controller)или适配器(Adapter). Основное различие между контроллерами и адаптерами заключается в способе их упаковки. Контроллер — это набор микросхем на самом устройстве ввода-вывода или на основной печатной плате системы (часто называемой материнской платой). Адаптер — это карта, которая вставляется в слот материнской платы. Независимо от формы организации их конечной целью является обмен информацией друг с другом.

  • 主存(Main Memory), основная память临时存储设备, вместо постоянного хранилища используется диск永久性存储устройство из. Основная память содержит как программу, так и данные, обрабатываемые потоком выполнения процессора. С физической точки зрения, основная память состоит из рядаDRAM(dynamic random access memory)Коллекция динамического случайного хранилища. Логически говоря, память представляет собой линейный массив байтов с уникальным номером адреса, начинающимся с 0. Вообще говоря, каждая машинная инструкция, составляющая программу, состоит из разного количества байтов, и размер элемента данных, соответствующего программной переменной C, зависит от типа. Например, на машине Linux x86-64 данные типа short требуют 2 байта, int и float — 4 байта, а long и double — 8 байт.

  • 处理器(Processor),CPU(central processing unit)Или просто процессор, механизм, который интерпретирует (и выполняет) инструкции, хранящиеся в основной памяти. Ядром процессора является запоминающее устройство (или регистр) размером со слово, называемое程序计数器(PC). В любой момент ПК указывает на инструкцию машинного языка в оперативной памяти (т. е. на адрес, содержащий эту инструкцию).

    С момента включения системы до ее выключения процессор непрерывно выполняет инструкцию, на которую указывает программный счетчик, а затем обновляет программный счетчик, чтобы он указывал на следующую инструкцию. Процессор работает в соответствии с моделью инструкций, определяемой его архитектурой набора инструкций. В этой модели инструкции выполняются в строгом порядке, и выполнение инструкции включает в себя выполнение ряда шагов. Процессор считывает инструкцию из памяти, на которую указывает программный счетчик, интерпретирует биты в инструкции, выполняет некоторую простую операцию, указанную инструкцией, а затем обновляет программный счетчик, чтобы он указывал на следующую инструкцию. Инструкции могут быть непрерывными или прерывистыми (например, инструкция jmp не будет считываться последовательно)

    Вот несколько шагов, которые ЦП может выполнить простую операцию

  • 加载(Load): Копировать байт или слово из основной памяти в память, перезаписывая предыдущее содержимое регистра

  • 存储(Store): Копировать байт или слово из регистра в место в основной памяти, перезаписывая предыдущее содержимое этого места.

  • 操作(Operate): Скопируйте содержимое двух регистров вALU(Arithmetic logic unit) . Выполняет арифметическую операцию над двумя словами и сохраняет результат в регистре, перезаписывая предыдущее содержимое регистра.

Арифметико-логическое устройство (АЛУ) представляет собой комбинированную цифровую электронную схему, которая выполняет арифметические и побитовые операции над цифровыми двоичными числами.

  • 跳转(jump): Извлечь слово из инструкции и скопировать слово в程序计数器(PC), перезаписать исходное значение

Анализ выполнения программы hello

Ранее мы кратко представили состав и работу аппаратной части компьютера Теперь мы формально представим, что происходит при запуске программы-примера Мы опишем это с точки зрения макросов и не будем вдаваться во все технические подробности.

Первоначально программа-оболочка выполняет свои инструкции и ждет, пока пользователь введет команду. когда мы печатаем на клавиатуре./helloДля этих нескольких символов программа оболочки считывает символы в регистр один за другим, а затем помещает их в память, как показано на следующем рисунке.

07

когда мы нажимаем на клавиатуру回车键, программа оболочки знает, что мы закончили вводить команду. Затем оболочка загружает исполняемый файл приветствия, выполняя ряд инструкций, которые копируют код и данные объектного файла с диска в оперативную память.

использоватьDMA(Direct Memory Access)Технология может напрямую копировать данные с диска в память следующим образом.

08

Как только код и данные приветствия в объектном файле загружаются в оперативную память, процессор начинает выполнять инструкции машинного языка в основной программе программы приветствия. Эти инструкции будутhello,world\nБайты в строке копируются из основной памяти в файл регистров, из регистров в устройство отображения и, наконец, отображаются на экране. Следующее

09

Кэш это ключ

Выше мы представили процесс выполнения приветственной программы Система тратит много времени на перемещение информации из одного места в другое. Машинные инструкции для программы hello изначально хранятся в磁盘начальство. Когда программа загрузится, они拷贝в основную память. Когда ЦП начинает работать, инструкции копируются из памяти в ЦП. Точно так же строковые данныеhello,world \nТакже изначально на диск, копируется в память и потом выводится на устройство отображения. С точки зрения программиста, такое копирование в основном является накладным, что снижает эффективность программы. Поэтому при проектировании системы главная задача — сделать так, чтобы программа работала все быстрее и быстрее.

По законам физики большие устройства хранения данных работают медленнее, чем устройства хранения меньшего размера. Из-за повышения эффективности обработки регистров и памяти разработчики систем приняли более мелкие и быстрые устройства хранения для этой разницы, называемой高速缓存存储器(cache memory, 简称为 cache 高速缓存), как временный плацдарм для хранения информации, которая может понадобиться в ближайшем будущем. Как показано ниже

10

На рисунке мы отметили расположение тайника, который находится в тайникеL1Емкость кэша может достигать десятков тысяч байт, а скорость доступа почти такая же, как при доступе к регистровому файлу. большая емкостьL2Кэш связан с процессором по специальной шине, и хотя кэш L2 в 5 раз медленнее, чем кэш L1, он все же в 5-10 раз быстрее памяти. L1 и L2 используют静态随机访问存储器(SRAM)реализуется аппаратными технологиями. Последние, более мощные системы имеют даже три уровня кэш-памяти: L1, L2 и L3. Система может получить большой объем памяти, и в то же время скорость доступа выше, потому что использование кеша局部性принцип.

Еще раз: Детали для начинающих

Теперь давайте обсудим入门级Детали программы, от мелкой до глубокой, чтобы понять особенности языка C.

#include<stdio.h>

Мы сказали выше,#include<stdio.h>это то, что обрабатывается перед компиляцией программы, называемое编译预处理Заказ.

Команды предварительной обработки обрабатываются перед компиляцией. Препроцессор обычно начинается с#начинается номер.

Все пакеты компилятора C предоставляютstdio.hдокумент. Этот файл содержит функции ввода и вывода, используемые компилятором, такие как информация println(). Смысл имени файластандартный ввод/выводголовной файл. Как правило, сбор информации в начале программы на языке C называется头文件(header).

Первый стандарт C был опубликован ANSI. Хотя этот документ позже был принят Международной организацией по стандартизации (ISO), а редакции, опубликованные ISO, были приняты ANSI, название ANSI C (а не ISO C) по-прежнему широко используется. Некоторые разработчики программного обеспечения используютISO C, и некоторые используютStandard C.

Стандартная библиотека C

В дополнение к стандартная библиотека C включает следующие заголовочные файлы.

11

<assert.h>

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

<ctype.h>

Заголовочный файл ctype.h стандартной библиотеки C предоставляет функции, которые можно использовать для проверки и сопоставления символов.

Эти символы принимают int в качестве параметра, его значение должно бытьEOFили беззнаковый символ

EOF — это компьютерный термин, сокращение от End Of File, в операционной системе это означает, что в источнике данных больше нет данных для чтения. Источники данных часто называют файлами или потоками. Обычно наличие этого символа в конце текста указывает на конец данных.

<errno.h>

Стандартная библиотека Cerrno.hЗаголовочный файл определяет целочисленные переменныеerrno, который задается через системный вызов, эти библиотечные функции указывают, что пошло не так.

<float.h>

Стандартная библиотека Cfloat.hФайл заголовка содержит набор зависимых от платформы констант, связанных со значениями с плавающей запятой.

<limits.h>

limits.hЗаголовочные файлы определяют различные свойства различных типов переменных. Макросы, определенные в этом заголовочном файле, ограничивают значения различных типов переменных, таких как char, int и long.

<locale.h>

locale.hЗаголовочный файл определяет параметры, зависящие от локали, такие как форматы даты и символы валюты.

<math.h>

math.hЗаголовочный файл определяет различные математические функции и макрос. Все функции, доступные в этой библиотеке, поставляются сdoubleпараметры типа, и оба возвращаютdoubleтип результата.

<setjmp.h>

setjmp.hЗаголовочный файл определяет макросsetjmp(), функцияlongjmp()и тип переменнойjmp_buf, который обходит обычные правила вызова и возврата функций.

<signal.h>

signal.hЗаголовочный файл определяет тип переменнойsig_atomic_t, два вызова функций и несколько макросов для обработки различных сигналов, сообщаемых во время выполнения программы.

<stdarg.h>

stdarg.hЗаголовочный файл определяет тип переменнойva_listи три макроса, которые можно использовать для получения параметров в функции, когда количество параметров неизвестно (т. е. количество параметров является переменным).

<stddef.h>

stddef .hЗаголовочный файл определяет различные типы переменных и макросы. Большинство этих определений также появляются в других файлах заголовков.

<stdlib.h>

stdlib .hЗаголовочный файл определяет четыре типа переменных, несколько макросов и различные общие служебные функции.

<string.h>

string .hЗаголовочный файл определяет тип переменной, макрос и различные функции для работы с массивами символов.

<time.h>

time.hЗаголовочный файл определяет четыре типа переменных, два макроса и различные функции для управления датами и временем.

основная функция

Основная функция звучит как озорной ребенок, намеренно дающий методу имя主要的способ сказать другим, что он является центром мира. Но это не так, иmain()Методы действительно являются центром мира.

Программа на языке C должна выполняться из функции main().За исключением функции main(), вы можете называть другие функции произвольно. Обычно после основного()представляет некоторую входящую информацию, которую мы не передавали в приведенном выше примере, потому что ввод в круглых скобках недействителен.

В дополнение к вышеуказанному способу написания, есть два способа выразить основной метод, один из нихvoid main(){}, одинint main(int argc, char* argv[]) {}

  • void main() объявляет конструктор с неопределенными параметрами
  • int main(int argc, char* argv[]) {} где argc — неотрицательное значение, представляющее количество аргументов, переданных программе из среды, в которой выполняется программа. Это указатель на первый элемент массива указателей argc + 1, где последний имеет значение null, а предыдущий (если есть) указывает на строку, представляющую аргументы, переданные программе из среды хоста. Если argv[0] не является нулевым указателем (или, что то же самое, если argc > 0), указывает на строку, представляющую имя программы, которое является нулевым, если имя программы нельзя использовать в среде хоста.

Примечания

В программе используйте /**/ для обозначения комментариев. Комментарии не имеют практического применения для программ, но они очень полезны для программистов. Они могут помочь нам понять программы и позволить другим понять программы, которые вы написали. нам очень противны люди, которые не пишут комментарии, что показывает, что комментарии очень важны.

image-20200830071857009

Преимущество комментария C заключается в том, что его можно разместить где угодно, даже если код находится на той же строке. Более длинные комментарии могут быть представлены в нескольких строках. Мы используем /**/ для представления многострочных комментариев, а // — только для однострочных комментариев. Ниже приведены представления нескольких аннотаций.

// 这是一个单行注释

/* 多行注释用一行表示 */

/*
 	多行注释用多行表示
 	 	多行注释用多行表示
 	 	 	多行注释用多行表示
 	 	 	 	多行注释用多行表示

*/

тело функции

После заголовочного файла и основного метода идет тело функции (комментарии обычно не включаются), тело функции — это исполнительное тело функции, где вы пишете много кода.

объявление переменной

В нашем коде начального уровня мы объявляемnumberпеременная, ее тип — int, эта строка кода называется声明, объявления являются одной из наиболее важных особенностей языка C. Это объявление выполняет две функции: определяет переменную с именем number и определяет конкретный тип числа.

int - это язык C关键字(keyword), представляющий базовый тип данных языка C. Ключевые слова используются для определения языка. Вы не можете использовать ключевые слова для определения переменных.

в примереnumberЯвляется标识符(identifier), то есть имя переменной, функции или другого объекта.

###Присвоение переменной

Во вводном примере программы мы объявляем числовую переменную и присваиваем ей значение 11. Присваивание — одна из основных операций языка C. Эта строка кода означает присвоение переменной number значения 1. При выполнении int number компилятор резервирует место в памяти компьютера для переменной number, а затем сохраняет значение в ранее зарезервированном месте при выполнении этой строки выражения присваивания. Вы можете присваивать различные значения числу, поэтому число называется变量(variable)причина.

12

функция printf

Во вводном примере программы есть три строки printf(), которая является стандартной функцией языка C. Содержимое в круглых скобках передается из функции main в функцию printf. Существует два типа параметров:实际参数(actual argument)и形式参数(formal parameters). Содержимое упомянутой выше функции printf в скобках является фактическими параметрами.

оператор возврата

Во вводном примере программы оператор return является последним оператором.int main(void)Int указывает, что функция main() должна возвращать целое число. Функция C с возвращаемым значением должна иметь оператор return, а в программах без возвращаемого значения также рекомендуется сохранять ключевое слово return — это хорошая привычка или единый стиль кодирования.

точка с запятой

В C каждая строка заканчивается на;To end указывает на конец оператора.Если вы забудете или опустите точку с запятой, компилятор выдаст сообщение об ошибке.

ключевые слова

Ниже приведены ключевые слова языка C. Всего ключевых слов в языке C.32, разделенные в соответствии с их различными функциями

ключевое слово типа данных

Есть в основном 12 ключевых слов типа данных, которые

  • char: объявить символьную переменную или функцию
  • double: объявить переменную или функцию двойной точности
  • float: объявить переменную или функцию с плавающей запятой
  • int: объявить целочисленную переменную или функцию
  • long: объявить длинную переменную или функцию
  • short: объявить короткую целочисленную переменную или функцию
  • signed: объявить переменную или функцию знакового типа
  • _Bool: объявить логический тип
  • _Complex: объявить множественное число
  • _Imaginary: объявить мнимое число
  • unsigned: объявить переменную или функцию беззнакового типа
  • void: объявляет функцию без возвращаемого значения или параметра, объявляет нетипизированный указатель

Ключевые слова оператора управления

Есть также 12 ключевых слов для цикла операторов управления, которые

оператор цикла

  • for: цикл for, используемый чаще всего
  • do: тело цикла предварительного условия оператора цикла.
  • while: условие цикла оператора цикла
  • break: выйти из текущего цикла
  • continue: Завершить текущий цикл и начать следующий цикл

Условные операторы

  • if: Условие суждения условного оператора
  • else: отрицательная ветвь условного оператора, используемая с if
  • goto: оператор безусловного перехода

оператор переключения

  • switch: для оператора switch
  • case: Другая ветвь оператора switch
  • default: другие ветки в операторе switch

оператор возврата

retur : Оператор возврата подпрограммы (с параметрами или без них)

ключевое слово типа хранилища

  • auto: Объявление автоматических переменных Обычно не используется
  • extern: переменные объявления объявляются в других файлах (также могут рассматриваться как ссылочные переменные)
  • register: объявить регистровую переменную
  • static: объявить статическую переменную

другие ключевые слова

  • const: объявить переменную только для чтения
  • sizeof: вычислить длину типа данных
  • typedef: используется для псевдонима типа данных
  • volatile: Указывает, что переменные могут быть неявно изменены во время выполнения программы.

постскриптум

В этой статье мы сначала расскажем о характеристиках языка C, о том, почему язык C так популярен, и о важности языка C. Затем мы начнем с вводной программы языка C. Мы поговорим об основных элементах языка C. Язык C используется в аппаратном обеспечении.Как работает вышеизложенное, процесс компиляции и процесс выполнения языка C и т. д. После этого мы дополнительно объясним характеристики состава входной примерной программы.

Я сам написал четыре PDF-файла, очень хардкорно, ссылки следующие

Cxuan кропотливо разработал четыре PDF-файла.