Переменная — это не что иное, как имя, данное области памяти, которой могут манипулировать наши программы. Каждая переменная в C имеет определенный тип, который определяет размер и расположение памяти переменной; диапазон значений, которые могут быть сохранены в этой памяти; и набор операций, которые могут быть применены к переменной.
Имя переменной может состоять из букв, цифр и символа подчеркивания. Он должен начинаться либо с буквы, либо с подчеркивания. Прописные и строчные буквы различны, потому что C чувствителен к регистру. Основываясь на базовых типах, описанных в предыдущей главе, будут следующие базовые типы переменных:
Sr.No. | Тип и описание |
---|---|
1 |
голец Обычно один октет (один байт). Это целочисленный тип. |
2 |
ИНТ Наиболее натуральный размер целого числа для машины. |
3 |
поплавок Значение с плавающей запятой одинарной точности. |
4 |
двойной Значение с плавающей запятой двойной точности. |
5 |
недействительным Представляет отсутствие типа. |
голец
Обычно один октет (один байт). Это целочисленный тип.
ИНТ
Наиболее натуральный размер целого числа для машины.
поплавок
Значение с плавающей запятой одинарной точности.
двойной
Значение с плавающей запятой двойной точности.
недействительным
Представляет отсутствие типа.
Язык программирования C также позволяет определять различные другие типы переменных, которые мы рассмотрим в следующих главах, таких как Перечисление, Указатель, Массив, Структура, Объединение и т. Д. В этой главе мы изучим только основные типы переменных.
Определение переменной в C
Определение переменной сообщает компилятору, где и сколько памяти нужно создать для переменной. Определение переменной определяет тип данных и содержит список из одной или нескольких переменных этого типа следующим образом:
type variable_list;
Здесь тип должен быть допустимым типом данных C, включая char, w_char, int, float, double, bool или любой определенный пользователем объект; и variable_list может состоять из одного или нескольких имен идентификаторов, разделенных запятыми. Некоторые действительные объявления показаны здесь —
int i, j, k; char c, ch; float f, salary; double d;
Линия int i, j, k; объявляет и определяет переменные i, j и k; который инструктирует компилятор создавать переменные с именами i, j и k типа int.
Переменные могут быть инициализированы (им присвоено начальное значение) в их объявлении. Инициализатор состоит из знака равенства, за которым следует постоянное выражение:
type variable_name = value;
Вот некоторые примеры:
extern int d = 3, f = 5; // declaration of d and f. int d = 3, f = 5; // definition and initializing d and f. byte z = 22; // definition and initializes z. char x = 'x'; // the variable x has the value 'x'.
Для определения без инициализатора: переменные со статической продолжительностью хранения неявно инициализируются с помощью NULL (все байты имеют значение 0); начальное значение всех остальных переменных не определено.
Объявление переменных в C
Объявление переменной дает гарантию компилятору, что существует переменная с заданным типом и именем, так что компилятор может продолжить компиляцию, не требуя полной информации о переменной. Определение переменной имеет смысл только во время компиляции, компилятору требуется фактическое определение переменной во время компоновки программы.
Объявление переменной полезно, когда вы используете несколько файлов и определяете свою переменную в одном из файлов, которые будут доступны во время компоновки программы. Вы будете использовать ключевое слово extern для объявления переменной в любом месте. Хотя вы можете объявлять переменную несколько раз в вашей C-программе, она может быть определена только один раз в файле, функции или блоке кода.
пример
Попробуйте следующий пример, где переменные были объявлены сверху, но они были определены и инициализированы внутри основной функции —
#include <stdio.h> // Variable declaration: extern int a, b; extern int c; extern float f; int main () { /* variable definition: */ int a, b; int c; float f; /* actual initialization */ a = 10; b = 20; c = a + b; printf("value of c : %d \n", c); f = 70.0/3.0; printf("value of f : %f \n", f); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
value of c : 30 value of f : 23.333334
Та же концепция применяется к объявлению функции, когда вы предоставляете имя функции во время ее объявления, и ее фактическое определение может быть дано где-либо еще. Например —
// function declaration int func(); int main() { // function call int i = func(); } // function definition int func() { return 0; }
L-значения и R-значения в C
Есть два вида выражений в C —
-
lvalue — выражения, которые ссылаются на ячейку памяти, называются «lvalue» выражениями. Lvalue может отображаться как левая или правая сторона задания.
-
rvalue — термин rvalue относится к значению данных, которое хранится по некоторому адресу в памяти. Значение r — это выражение, которому не может быть присвоено значение, что означает, что значение r может появляться в правой части, но не в левой части назначения.
lvalue — выражения, которые ссылаются на ячейку памяти, называются «lvalue» выражениями. Lvalue может отображаться как левая или правая сторона задания.
rvalue — термин rvalue относится к значению данных, которое хранится по некоторому адресу в памяти. Значение r — это выражение, которому не может быть присвоено значение, что означает, что значение r может появляться в правой части, но не в левой части назначения.
Переменные являются l-значениями, поэтому они могут отображаться в левой части назначения. Числовые литералы являются r-значениями, поэтому они не могут быть назначены и не могут отображаться слева. Взгляните на следующие действительные и недействительные утверждения —