logo

Типи даних у C

Тип даних визначає тип даних, які змінна може зберігати, як-от ціле, плаваюче, символьне тощо.

C Типи даних

У мові C є такі типи даних.

ТипиТипи даних
Базовий тип данихint, char, float, double
Похідний тип данихмасив, покажчик, структура, об'єднання
Тип даних перерахуванняперелік
Тип даних Voidнедійсний

Основні типи даних

Основними типами даних є цілі числа та числа з плаваючою комою. Мова C підтримує як знакові, так і беззнакові літерали.

Розмір пам'яті основних типів даних може змінюватися залежно від 32- або 64-розрядної операційної системи.

як вийти з циклу while java

Розглянемо основні типи даних. Його розмір задано відповідно до 32-розрядної архітектури .

Типи данихРозмір пам'ятіДіапазон
char 1 байтвід −128 до 127
підписаний символ1 байтвід −128 до 127
беззнаковий символ1 байтвід 0 до 255
короткий 2 байтавід −32 768 до 32 767
підписаний короткий2 байтавід −32 768 до 32 767
непідписаний короткий2 байтавід 0 до 65 535
внутр 2 байтавід −32 768 до 32 767
підписаний внутр2 байтавід −32 768 до 32 767
unsigned int2 байтавід 0 до 65 535
короткий міжн 2 байтавід −32 768 до 32 767
підписаний короткий міжн2 байтавід −32 768 до 32 767
беззнаковий короткий міжн2 байтавід 0 до 65 535
довгий внутр 4 байт-2 147 483 648 до 2 147 483 647
підписаний довгий внутр4 байт-2 147 483 648 до 2 147 483 647
unsigned long int4 байт0 до 4 294 967 295
плавати 4 байт
подвійний 8 байт
довгий подвійний 10 байт

Int:

Цілі числа це цілі числа без дробових або десяткових частин, а також тип даних int використовується для їх представлення.

Його часто застосовують до змінних, які включають значення , як от відліки, індекси , або інші цифрові числа. The тип даних int може представляти обидва позитивний і негативні числа оскільки він підписаний за замовчуванням.

Ан внутр займає 4 байти пам’яті на більшості пристроїв, що дозволяє зберігати значення приблизно від -2 до +2 мільярдів.

Символ:

Окремі персонажі представлені тип даних char . Зазвичай використовується для утримання ASCII або Символи схеми кодування UTF-8 , як от букви, цифри, символи , або коми . Є 256 символів який може бути представлений одним символом, який займає один байт пам’яті. Такі персонажі, як «A», «b», «5», або '$' беруться в одинарні лапки.

Поплавок:

Щоб представити цілі числа, використовуйте плаваючий тип даних . Плаваючі числа можна використовувати для представлення дробових одиниць або чисел із десятковими знаками.

The поплавковий тип зазвичай використовується для змінних, які вимагають дуже високої точності, але можуть бути не дуже точними. Він може зберігати значення з точністю до приблизно 6 знаків після коми і діапазон о 3,4 х 1038 в 4 байти пам'яті.

Двомісний:

Використовуйте два типи даних для представлення два плаваючих цілих числа . Коли потрібна додаткова точність, наприклад у наукових розрахунках або фінансових додатках, вона забезпечує більшу точність порівняно з плаваючою величиною.

Подвійний тип , який використовує 8 байт пам'яті і має точність о 15 знаків після коми, дає більші значення . C розглядає числа з плаваючою комою як подвійні за замовчуванням, якщо не вказано явний тип.

 int age = 25; char grade = 'A'; float temperature = 98.6; double pi = 3.14159265359; 

У наведеному вище прикладі ми оголошуємо чотири змінні: an int змінна для віку людини, а змінна char за оцінку студента, а змінна float для зчитування температури та дві змінні для число пі.

види тестування

Похідний тип даних

Окрім основних типів даних, C також підтримує похідні типи даних, в тому числі масиви, покажчики, структури, і спілок . Ці типи даних дають програмістам можливість обробляти різнорідні дані, безпосередньо змінювати пам’ять і створювати складні структури даних.

Масив:

Ан масив, похідний тип даних , дозволяє зберігати послідовність елементи фіксованого розміру одного типу. Він надає механізм для об’єднання кількох цілей однакових даних під одним ім’ям.

Індекс використовується для доступу до елементів масиву з a 0 індекс для першого запису. Розмір масиву фіксується під час оголошення і не може бути змінений під час виконання програми. Компоненти масиву розміщуються в суміжних областях пам’яті.

Ось приклад оголошення та використання масиву:

 #include int main() { int numbers[5]; // Declares an integer array with a size of 5 elements // Assign values to the array elements numbers[0] = 10; numbers[1] = 20; numbers[2] = 30; numbers[3] = 40; numbers[4] = 50; // Display the values stored in the array printf(&apos;Values in the array: &apos;); for (int i = 0; i <5; i++) { printf('%d ', numbers[i]); } printf('
'); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> Values in the array: 10 20 30 40 50 </pre> <h3>Pointer:</h3> <p>A <strong> <em>pointer</em> </strong> is a derived data type that keeps track of another data type&apos;s memory address. When a <strong> <em>pointer</em> </strong> is declared, the <strong> <em>data type</em> </strong> it refers to is <strong> <em>stated first</em> </strong> , and then the <strong> <em>variable name</em> </strong> is preceded by <strong> <em>an asterisk (*)</em> </strong> .</p> <p>You can have incorrect access and change the value of variable using pointers by specifying the memory address of the variable. <strong> <em>Pointers</em> </strong> are commonly used in <strong> <em>tasks</em> </strong> such as <strong> <em>function pointers, data structures</em> </strong> , and <strong> <em>dynamic memory allocation</em> </strong> .</p> <p>Here is an example of declaring and employing a pointer:</p> <pre> #include int main() { int num = 42; // An integer variable int *ptr; // Declares a pointer to an integer ptr = # // Assigns the address of &apos;num&apos; to the pointer // Accessing the value of &apos;num&apos; using the pointer printf(&apos;Value of num: %d
&apos;, *ptr); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Value of num: 42 </pre> <h3>Structure:</h3> <p>A structure is a derived data type that enables the creation of composite data types by allowing the grouping of many data types under a single name. It gives you the ability to create your own unique data structures by fusing together variables of various sorts.</p> <ol class="points"> <li>A structure&apos;s members or fields are used to refer to each variable within it.</li> <li>Any data type, including different structures, can be a member of a structure.</li> <li>A structure&apos;s members can be accessed by using the dot (.) operator.</li> </ol> <p>A declaration and use of a structure is demonstrated here:</p> <pre> #include #include // Define a structure representing a person struct Person { char name[50]; int age; float height; }; int main() { // Declare a variable of type struct Person struct Person person1; // Assign values to the structure members strcpy(person1.name, &apos;John Doe&apos;); person1.age = 30; person1.height = 1.8; // Accessing the structure members printf(&apos;Name: %s
&apos;, person1.name); printf(&apos;Age: %d
&apos;, person1.age); printf(&apos;Height: %.2f
&apos;, person1.height); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Name: John Doe Age: 30 Height: 1.80 </pre> <h3>Union:</h3> <p>A derived data type called a <strong> <em>union</em> </strong> enables you to store various data types in the same memory address. In contrast to structures, where each member has a separate memory space, members of a union all share a single memory space. A value can only be held by one member of a union at any given moment. When you need to represent many data types interchangeably, unions come in handy. Like structures, you can access the members of a union by using the <strong> <em>dot (.)</em> </strong> operator.</p> <p>Here is an example of a union being declared and used:</p> <pre> #include // Define a union representing a numeric value union NumericValue { int intValue; float floatValue; char stringValue[20]; }; int main() { // Declare a variable of type union NumericValue union NumericValue value; // Assign a value to the union value.intValue = 42; // Accessing the union members printf(&apos;Integer Value: %d
&apos;, value.intValue); // Assigning a different value to the union value.floatValue = 3.14; // Accessing the union members printf(&apos;Float Value: %.2f
&apos;, value.floatValue); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Integer Value: 42 Float Value: 3.14 </pre> <h2>Enumeration Data Type</h2> <p>A set of named constants or <strong> <em>enumerators</em> </strong> that represent a collection of connected values can be defined in C using the <strong> <em>enumeration data type (enum). Enumerations</em> </strong> give you the means to give names that make sense to a group of integral values, which makes your code easier to read and maintain. </p> <p>Here is an example of how to define and use an enumeration in C:</p> <pre> #include // Define an enumeration for days of the week enum DaysOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; int main() { // Declare a variable of type enum DaysOfWeek enum DaysOfWeek today; // Assign a value from the enumeration today = Wednesday; // Accessing the enumeration value printf(&apos;Today is %d
&apos;, today); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Today is 2 </pre> <h2>Void Data Type</h2> <p>The <strong> <em>void data type</em> </strong> in the C language is used to denote the lack of a particular type. <strong> <em>Function return types, function parameters</em> </strong> , and <strong> <em>pointers</em> </strong> are three situations where it is frequently utilized.</p> <h3>Function Return Type:</h3> <p>A <strong> <em>void return type</em> </strong> function does not produce a value. A <strong> <em>void function</em> </strong> executes a task or action and ends rather than returning a value.</p> <p> <strong>Example:</strong> </p> <pre> void printHello() { printf(&apos;Hello, world!
&apos;); } </pre> <h3>Function Parameters: </h3> <p>The <strong> <em>parameter void</em> </strong> can be used to indicate that a function accepts no arguments.</p> <p> <strong>Example:</strong> </p> <pre> void processInput(void) { /* Function logic */ } </pre> <h3>Pointers:</h3> <p>Any address can be stored in a pointer of type <strong> <em>void*</em> </strong> , making it a universal pointer. It offers a method for working with pointers to ambiguous or atypical types.</p> <p> <strong>Example:</strong> </p> <pre> void* dataPtr; </pre> <p>The <strong> <em>void data type</em> </strong> is helpful for defining functions that don&apos;t accept any arguments when working with generic pointers or when you wish to signal that a function doesn&apos;t return a value. It is significant to note that while <strong> <em>void*</em> </strong> can be used to build generic pointers, void itself cannot be declared as a variable type.</p> <p>Here is a sample of code that shows how to utilize void in various situations:</p> <pre> #include // Function with void return type void printHello() { printf(&apos;Hello, world!
&apos;); } // Function with void parameter void processInput(void) { printf(&apos;Processing input...
&apos;); } int main() { // Calling a void function printHello(); // Calling a function with void parameter processInput(); // Using a void pointer int number = 10; void* dataPtr = &amp;number; printf(&apos;Value of number: %d
&apos;, *(int*)dataPtr); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Hello, world! Processing input... Value of number: 10 </pre> <h2>Conclusion:</h2> <p>As a result, <strong> <em>data types</em> </strong> are essential in the C programming language because they define the kinds of information that variables can hold. They provide the data&apos;s size and format, enabling the compiler to allot memory and carry out the necessary actions. Data types supported by C include <strong> <em>void, enumeration, derived</em> </strong> , and <strong> <em>basic types</em> </strong> . In addition to floating-point types like <strong> <em>float</em> </strong> and <strong> <em>double</em> </strong> , basic data types in C also include integer-based kinds like <strong> <em>int, char</em> </strong> , and <strong> <em>short</em> </strong> . These forms can be <strong> <em>signed</em> </strong> or <strong> <em>unsigned</em> </strong> , and they fluctuate in size and range. To create dependable and efficient code, it is crucial to comprehend the memory size and scope of these types.</p> <p>A few examples of <strong> <em>derived data types</em> </strong> are <strong> <em>unions, pointers, structures</em> </strong> , and <strong> <em>arrays</em> </strong> . Multiple elements of the same kind can be stored together in contiguous memory due to arrays. <strong> <em>Pointers</em> </strong> keep track of memory addresses, allowing for fast data structure operations and dynamic memory allocation. While <strong> <em>unions</em> </strong> allow numerous variables to share the same memory space, structures group relevant variables together.</p> <p> <strong> <em>Code</em> </strong> becomes more legible and maintainable when named constants are defined using enumeration data types. <strong> <em>Enumerations</em> </strong> give named constants integer values to enable the meaningful representation of related data. The void data type indicates the lack of a particular type. It is used as a return type for both <strong> <em>functions</em> </strong> and <strong> <em>function parameters</em> </strong> that don&apos;t take any arguments and don&apos;t return a value. The <strong> <em>void* pointer</em> </strong> also functions as a general pointer that can <strong> <em>store addresses</em> </strong> of various types.</p> <p>C programming requires a solid understanding of <strong> <em>data types</em> </strong> . Programmers can ensure adequate memory allocation, avoid <strong> <em>data overflow</em> </strong> or <strong> <em>truncation</em> </strong> , and enhance the readability and maintainability of their code by selecting the right <strong> <em>data type</em> </strong> . C programmers may create <strong> <em>effective, dependable</em> </strong> , and well-structured code that satisfies the requirements of their applications by having a firm understanding of data types.</p> <hr></5;>

покажчик:

А покажчик це похідний тип даних, який відстежує адресу пам’яті іншого типу даних. Коли a покажчик оголошено, в тип даних це відноситься до є заявив перший , а потім ім'я змінної передує зірочка (*) .

Ви можете отримати неправильний доступ і змінити значення змінної за допомогою покажчиків, вказавши адресу пам'яті змінної. Покажчики зазвичай використовуються в завдання як от покажчики на функції, структури даних , і динамічний розподіл пам'яті .

Ось приклад оголошення та використання покажчика:

 #include int main() { int num = 42; // An integer variable int *ptr; // Declares a pointer to an integer ptr = # // Assigns the address of &apos;num&apos; to the pointer // Accessing the value of &apos;num&apos; using the pointer printf(&apos;Value of num: %d
&apos;, *ptr); return 0; } 

Вихід:

 Value of num: 42 

Структура:

Структура — це похідний тип даних, який дозволяє створювати складені типи даних, дозволяючи групувати багато типів даних під одним іменем. Це дає вам можливість створювати власні унікальні структури даних шляхом об’єднання змінних різного типу.

приклад списку в java
  1. Члени або поля структури використовуються для посилання на кожну змінну всередині неї.
  2. Будь-який тип даних, включаючи різні структури, може бути членом структури.
  3. Доступ до елементів структури можна отримати за допомогою оператора крапка (.).

Оголошення та використання структури демонструється тут:

 #include #include // Define a structure representing a person struct Person { char name[50]; int age; float height; }; int main() { // Declare a variable of type struct Person struct Person person1; // Assign values to the structure members strcpy(person1.name, &apos;John Doe&apos;); person1.age = 30; person1.height = 1.8; // Accessing the structure members printf(&apos;Name: %s
&apos;, person1.name); printf(&apos;Age: %d
&apos;, person1.age); printf(&apos;Height: %.2f
&apos;, person1.height); return 0; } 

Вихід:

 Name: John Doe Age: 30 Height: 1.80 

Союз:

Похідний тип даних, який називається a спілка дає змогу зберігати різні типи даних за однією адресою пам’яті. На відміну від структур, у яких кожен член має окремий простір пам’яті, всі члени об’єднання спільно використовують один простір пам’яті. Значення може мати лише один член об’єднання в будь-який момент. Коли вам потрібно представити багато типів даних взаємозамінно, об’єднання стають у нагоді. Подібно до структур, ви можете отримати доступ до членів об’єднання за допомогою крапка (.) оператор.

Ось приклад оголошення та використання об’єднання:

 #include // Define a union representing a numeric value union NumericValue { int intValue; float floatValue; char stringValue[20]; }; int main() { // Declare a variable of type union NumericValue union NumericValue value; // Assign a value to the union value.intValue = 42; // Accessing the union members printf(&apos;Integer Value: %d
&apos;, value.intValue); // Assigning a different value to the union value.floatValue = 3.14; // Accessing the union members printf(&apos;Float Value: %.2f
&apos;, value.floatValue); return 0; } 

Вихід:

 Integer Value: 42 Float Value: 3.14 

Тип даних перерахування

Набір іменованих констант або переписувачі які представляють набір зв’язаних значень, можна визначити в C за допомогою тип даних перерахування (enum). Перерахування дають вам засоби для надання імен, які мають сенс для групи інтегральних значень, що полегшує читання та підтримку вашого коду.

Ось приклад того, як визначити та використовувати перерахування в C:

 #include // Define an enumeration for days of the week enum DaysOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; int main() { // Declare a variable of type enum DaysOfWeek enum DaysOfWeek today; // Assign a value from the enumeration today = Wednesday; // Accessing the enumeration value printf(&apos;Today is %d
&apos;, today); return 0; } 

Вихід:

 Today is 2 

Тип даних Void

The тип даних void у мові C використовується для позначення відсутності певного типу. Типи повернення функції, параметри функції , і вказівники є три ситуації, коли він часто використовується.

Тип повернення функції:

А тип повернення void функція не створює значення. А функція порожнечі виконує завдання або дію та завершується, а не повертає значення.

приклад:

 void printHello() { printf(&apos;Hello, world!
&apos;); } 

Параметри функції:

The параметр void може використовуватися для вказівки на те, що функція не приймає аргументів.

приклад:

шаблон проектування java
 void processInput(void) { /* Function logic */ } 

Покажчики:

Будь-яка адреса може зберігатися в покажчику типу пустота* , що робить його універсальним покажчиком. Він пропонує метод для роботи з покажчиками на неоднозначні або нетипові типи.

приклад:

 void* dataPtr; 

The тип даних void корисно для визначення функцій, які не приймають жодних аргументів під час роботи із загальними покажчиками або коли ви хочете повідомити, що функція не повертає значення. Важливо відзначити, що поки пустота* може використовуватися для створення загальних покажчиків, сам void не може бути оголошений як тип змінної.

Ось зразок коду, який показує, як використовувати void у різних ситуаціях:

 #include // Function with void return type void printHello() { printf(&apos;Hello, world!
&apos;); } // Function with void parameter void processInput(void) { printf(&apos;Processing input...
&apos;); } int main() { // Calling a void function printHello(); // Calling a function with void parameter processInput(); // Using a void pointer int number = 10; void* dataPtr = &amp;number; printf(&apos;Value of number: %d
&apos;, *(int*)dataPtr); return 0; } 

Вихід:

 Hello, world! Processing input... Value of number: 10 

Висновок:

В результаті, типи даних є важливими в мові програмування C, оскільки вони визначають види інформації, яку можуть містити змінні. Вони забезпечують розмір і формат даних, дозволяючи компілятору виділяти пам'ять і виконувати необхідні дії. Типи даних, які підтримує C, включають недійсний, перерахування, похідний , і основні види . Окрім типів із плаваючою комою, таких як плавати і подвійний , основні типи даних у C також включають типи на основі цілих чисел, наприклад int, char , і короткий . Ці форми можуть бути підписаний або без підпису , і вони коливаються за розміром і діапазоном. Щоб створити надійний і ефективний код, дуже важливо розуміти розмір пам’яті та обсяг цих типів.

Кілька прикладів похідні типи даних є союзи, покажчики, структури , і масиви . Кілька елементів одного виду можуть зберігатися разом у безперервній пам’яті завдяки масивам. Покажчики відстежувати адреси пам'яті, що дозволяє виконувати швидкі операції зі структурою даних і динамічний розподіл пам'яті. Поки спілок дозволяють численним змінним спільно використовувати один простір пам’яті, структури групують відповідні змінні разом.

Код стає більш зрозумілим і доступним для обслуговування, коли іменовані константи визначені за допомогою типів даних перерахування. Перерахування надайте іменованим константам цілі значення, щоб уможливити осмислене представлення пов’язаних даних. Тип даних void вказує на відсутність певного типу. Він використовується як тип повернення для обох функції і параметри функції які не приймають жодних аргументів і не повертають значення. The пустий* покажчик також функціонує як загальний покажчик, який може адреси магазинів різних видів.

Програмування на C вимагає глибокого розуміння типи даних . Програмісти можуть забезпечити адекватний розподіл пам'яті, уникати переповнення даних або усічення , а також підвищити читабельність і зручність обслуговування їх коду, вибравши правильний вибір тип даних . Програмісти на C можуть створювати ефективний, надійний , а також добре структурований код, який задовольняє вимоги їхніх програм, маючи чітке розуміння типів даних.

python rstrip