logo

Типови података у Ц

Тип података одређује тип података које променљива може да складишти, као што су цео број, плутајући, карактер итд.

Ц Типови података

У језику Ц постоје следећи типови података.

ВрстеТипови података
Основни тип податакаинт, цхар, флоат, доубле
Изведени тип податаканиз, показивач, структура, унија
Тип података набрајањаенум
Неважећи тип податакапразнина

Основни типови података

Основни типови података су засновани на целим бројевима и засновани на покретном зарезу. Ц језик подржава и потписане и непотписане литерале.

Величина меморије основних типова података може се променити у зависности од 32 или 64-битног оперативног система.

уникс вс виндовс

Хајде да видимо основне типове података. Његова величина је дата према 32-битној архитектури .

Типови податакаВеличина меморијеДомет
цхар 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
унсигнед инт2 бајта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
унсигнед лонг инт4 бајта0 до 4,294,967,295
пловак 4 бајта
дупло 8 бајтова
дуга двострука 10 бајтова

Инт:

Интегерс су цели бројеви без разломака или децималних делова, и инт тип података се користи за њихово представљање.

Често се примењује на променљиве које укључују вредности , као такав броји, индекси , или друге нумеричке бројеве. Тхе инт тип података може представљати и једно и друго позитивним и негативни бројеви јер је подразумевано потписан.

Ан инт заузима 4 бајта меморије на већини уређаја, што му омогућава да чува вредности између око -2 милијарде и +2 милијарде.

Цхар:

Појединачни ликови су представљени цхар тип података . Обично се користи за држање АСЦИИ или УТФ-8 знакови шеме кодирања , као такав слова, бројеви, симболи , или зарезима . Постоје 256 карактера који се може представити једним знаком, који заузима један бајт меморије. Ликови као што су 'А', 'б', '5', или '$' стављају се у једноструке наводнике.

Пловак:

Да бисте представили целе бројеве, користите плутајући тип података . Плутајући бројеви се могу користити за представљање разломака или бројева са децималним местима.

Тхе плутајући тип се обично користи за варијабле које захтевају веома добру прецизност, али можда нису баш прецизне. Може да чува вредности са тачношћу од око 6 децималних места и распон од око 3,4 к 1038 ин 4 бајта памћења.

Двоструко:

Користите два типа података за представљање два плутајућа цела броја . Када је потребна додатна прецизност, на пример у научним прорачунима или финансијским применама, пружа већу прецизност у поређењу са плутајућим.

програм на јава

Двоструки тип , који користи 8 бајтова меморије и има тачност од око 15 децималних места, даје веће вредности . Ц третира бројеве са покретним зарезом као дупле подразумевано ако није наведен експлицитни тип.

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

У примеру изнад, декларисали смо четири променљиве: ан инт променљива за старост особе, а цхар променљива за оцену ученика, а флоат променљива за очитавање температуре и две варијабле за број пи.

Изведени тип података

Осим основних типова података, Ц такође подржава изведени типови података, укључујући низови, показивачи, структуре, и синдикати . Ови типови података дају програмерима могућност да рукују хетерогеним подацима, директно модификују меморију и граде компликоване структуре података.

Низ:

Ан низ, изведени тип података , омогућава вам да сачувате низ од елементи фиксне величине истог типа. Обезбеђује механизам за спајање више циљева истих података под истим именом.

Индекс се користи за приступ елементима низа, са а 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;>

показивач:

А показивач је изведени тип података који прати меморијску адресу другог типа података. Када показивач је проглашен, тхе тип података односи се на је наведено прво , а затим и име променљиве претходи му звездица (*) .

Можете имати погрешан приступ и променити вредност променљиве помоћу показивача тако што ћете навести меморијску адресу променљиве. Поинтерс се обично користе у задатака као такав показивачи функција, структуре података , и динамичка алокација меморије .

Ево примера декларисања и употребе показивача:

 #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 

Структура:

Структура је изведени тип података који омогућава креирање сложених типова података дозвољавајући груписање многих типова података под једним именом. Даје вам могућност да креирате сопствене јединствене структуре података спајањем променљивих различитих врста.

миливецрицкет алтернатива
  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 

Унија:

Изведени тип података који се зове а унија омогућава складиштење различитих типова података на истој меморијској адреси. За разлику од структура, где сваки члан има посебан меморијски простор, сви чланови синдиката деле један меморијски простор. Вредност може имати само један члан синдиката у било ком тренутку. Када треба да представите многе типове података наизменично, синдикати добро долазе. Као и структурама, можете приступити члановима синдиката користећи тачка (.) оператер.

Ево примера синдиката који се декларише и користи:

 #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 

Тип података набрајања

Скуп именованих константи или пописивачи које представљају колекцију повезаних вредности могу се дефинисати у Ц помоћу тип података набрајања (енум). Енумератионс дају вам средства да групи интегралних вредности дате имена која имају смисла, што чини ваш код лакшим за читање и одржавање.

Ево примера како да дефинишете и користите набрајање у Ц:

 #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 printHello() { printf(&apos;Hello, world!
&apos;); } 

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

Тхе параметар воид може се користити да означи да функција не прихвата аргументе.

авс редсхифт

Пример:

 void processInput(void) { /* Function logic */ } 

Показивачи:

Било која адреса може бити сачувана у показивачу типа празнина* , што га чини универзалним показивачем. Нуди метод за рад са показивачима на двосмислене или атипичне типове.

Пример:

 void* dataPtr; 

Тхе неважећи тип података је од помоћи за дефинисање функција које не прихватају никакве аргументе када радите са генеричким показивачима или када желите да сигнализирате да функција не враћа вредност. Значајно је напоменути да док празнина* може се користити за прављење генеричких показивача, сама воид се не може декларисати као тип променљиве.

Ево примера кода који показује како да користите воид у различитим ситуацијама:

 #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 

Закључак:

Као резултат, типови података су суштински у програмском језику Ц јер дефинишу врсте информација које променљиве могу да садрже. Они обезбеђују величину и формат података, омогућавајући компајлеру да додели меморију и изврши неопходне радње. Типови података које подржава Ц укључују празнина, набрајање, изведено , и основне врсте . Поред типова са помичним зарезом као што су пловак и дупло , основни типови података у Ц такође укључују врсте засноване на целим бројевима као што су инт, цхар , и кратак . Ови облици могу бити потписан или непотписан , и варирају у величини и опсегу. Да бисте креирали поуздан и ефикасан код, кључно је разумети величину меморије и опсег ових типова.

Неколико примера за изведени типови података су синдикати, показивачи, структуре , и низови . Више елемената исте врсте може се ускладиштити заједно у континуалној меморији због низова. Поинтерс пратите меморијске адресе, омогућавајући брзе операције структуре података и динамичку алокацију меморије. Док синдикати дозвољавају бројним варијаблама да деле исти меморијски простор, структуре групишу релевантне променљиве заједно.

мискл упдате придружите се

Код постаје читљивији и одрживији када се именоване константе дефинишу коришћењем типова података набрајања. Енумератионс дају именоване константе целобројне вредности да би се омогућило смислено представљање повезаних података. Воид тип података указује на недостатак одређеног типа. Користи се као тип повратка за оба функције и параметри функције који не узимају никакве аргументе и не враћају вредност. Тхе празнина* показивач такође функционише као општи показивач који може адресе продавница разних врста.

Ц програмирање захтева добро разумевање типови података . Програмери могу да обезбеде адекватну алокацију меморије, избегавајте преливање података или скраћивање , и побољшати читљивост и могућност одржавања њиховог кода одабиром правог тип података . Ц програмери могу креирати ефикасан, поуздан , и добро структуиран код који задовољава захтеве њихових апликација тако што има чврсто разумевање типова података.