logo

Typy údajov v C

Dátový typ určuje typ údajov, ktoré môže premenná ukladať, napríklad celé číslo, plávajúce číslo, znak atď.

C dátové typy

V jazyku C existujú nasledujúce typy údajov.

TypyTypy údajov
Základný typ údajovint, char, float, double
Odvodený typ údajovpole, ukazovateľ, štruktúra, spojenie
Typ údajov enumerácieenum
Typ neplatných údajovneplatné

Základné typy údajov

Základné dátové typy sú založené na celých číslach a na báze s pohyblivou rádovou čiarkou. Jazyk C podporuje podpísané aj nepodpísané literály.

Veľkosť pamäte základných dátových typov sa môže meniť podľa 32 alebo 64-bitového operačného systému.

výber z viacerých tabuliek v sql

Pozrime sa na základné dátové typy. Jeho veľkosť je daná podľa 32-bitovej architektúry .

Typy údajovVeľkosť pamäteRozsah
char 1 bajt-128 až 127
podpísaný char1 bajt-128 až 127
nepodpísaný char1 bajt0 až 255
krátky 2 bajty−32 768 až 32 767
podpísané skratkou2 bajty−32 768 až 32 767
unsigned short2 bajty0 až 65 535
int 2 bajty−32 768 až 32 767
podpísané int2 bajty−32 768 až 32 767
unsigned int2 bajty0 až 65 535
krátky int 2 bajty−32 768 až 32 767
podpísané krátke int2 bajty−32 768 až 32 767
unsigned short int2 bajty0 až 65 535
dlhá int 4 bajty-2 147 483 648 až 2 147 483 647
podpísané dlhé int4 bajty-2 147 483 648 až 2 147 483 647
unsigned long int4 bajty0 až 4,294,967,295
plavák 4 bajty
dvojitý 8 bajtov
dlhý dvojitý 10 bajtov

Int:

Celé čísla sú celé čísla bez zlomkových alebo desatinných častí a typ údajov int sa používa na ich reprezentáciu.

Často sa používa na premenné, ktoré zahŕňajú hodnoty , ako napr počty, indexy , alebo iné číselné čísla. The typ údajov int môže predstavovať oboje pozitívne a záporné čísla pretože je štandardne podpísaný.

An int zaberá 4 bajty pamäte na väčšine zariadení, čo umožňuje ukladať hodnoty medzi približne -2 miliardami a +2 miliardami.

Char:

Jednotlivé znaky sú zastúpené typ údajov char . Zvyčajne sa používa na držanie ASCII alebo Znaky schémy kódovania UTF-8 , ako napr písmená, číslice, symboly , alebo čiarky . Existujú 256 znakov ktorý môže byť reprezentovaný jedným znakom, ktorý zaberá jeden bajt pamäte. Postavy ako napr 'A', 'b', '5', alebo '$' sú uvedené v jednoduchých úvodzovkách.

Plavák:

Ak chcete reprezentovať celé čísla, použite plávajúci dátový typ . Plávajúce čísla možno použiť na vyjadrenie zlomkových jednotiek alebo čísel s desatinnými miestami.

The plavákový typ sa zvyčajne používa pre premenné, ktoré vyžadujú veľmi dobrú presnosť, ale nemusia byť veľmi presné. Dokáže ukladať hodnoty s presnosťou približne 6 desatinných miest a rozsah cca 3,4 x 1038 v 4 bajty pamäte.

Dvojité:

Na reprezentáciu použite dva typy údajov dve plávajúce celé čísla . Keď je potrebná dodatočná presnosť, napríklad vo vedeckých výpočtoch alebo finančných aplikáciách, poskytuje väčšiu presnosť v porovnaní s plavákom.

trieda objektov v jazyku Java

Dvojitý typ , ktorý využíva 8 bajtov pamäte a má presnosť asi 15 desatinných miest, dáva väčšie hodnoty . C štandardne zaobchádza s číslami s pohyblivou rádovou čiarkou ako s dvojnásobkami, ak nie je zadaný žiadny explicitný typ.

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

Vo vyššie uvedenom príklade deklarujeme štyri premenné: an int premenná pre vek osoby, a char premenná za známku žiaka, a float premenná pre odčítanie teploty a dve premenné pre číslo pi.

Odvodený typ údajov

Okrem základných dátových typov podporuje aj C odvodené dátové typy, počítajúc do toho polia, ukazovatele, štruktúry, a odborov . Tieto dátové typy dávajú programátorom možnosť spracovávať heterogénne dáta, priamo modifikovať pamäť a vytvárať komplikované dátové štruktúry.

Pole:

An pole, odvodený dátový typ , vám umožní uložiť sekvenciu prvky pevnej veľkosti rovnakého typu. Poskytuje mechanizmus na spájanie viacerých cieľov rovnakých údajov pod rovnakým názvom.

Index sa používa na prístup k prvkom poľa, pričom a index 0 pre prvý vstup. Veľkosť poľa je pevná v čase deklarácie a nemožno ju zmeniť počas vykonávania programu. Komponenty poľa sú umiestnené v susedných pamäťových oblastiach.

Tu je príklad deklarovania a použitia poľa:

 #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;>

Ukazovateľ:

A ukazovateľ je odvodený dátový typ, ktorý sleduje pamäťovú adresu iného dátového typu. Keď ukazovateľ sa vyhlasuje, Dátový typ odkazuje na je uvedené ako prvé , a potom názov premennej predchádza hviezdička (*) .

Môžete mať nesprávny prístup a zmeniť hodnotu premennej pomocou ukazovateľov zadaním adresy pamäte premennej. Ukazovatele sa bežne používajú v úlohy ako napr ukazovatele funkcií, dátové štruktúry a dynamická alokácia pamäte .

Tu je príklad deklarovania a použitia ukazovateľ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; } 

Výkon:

 Value of num: 42 

Štruktúra:

Štruktúra je odvodený typ údajov, ktorý umožňuje vytváranie zložených typov údajov tým, že umožňuje zoskupovanie mnohých typov údajov pod jedným názvom. Poskytuje vám možnosť vytvárať si vlastné jedinečné dátové štruktúry spájaním premenných rôznych druhov.

java webové služby
  1. Členovia alebo polia štruktúry sa používajú na odkazovanie na každú premennú v nej.
  2. Členom štruktúry môže byť akýkoľvek typ údajov, vrátane rôznych štruktúr.
  3. K členom štruktúry je možné pristupovať pomocou operátora bodka (.).

Vyhlásenie a použitie štruktúry je demonštrované tu:

 #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; } 

Výkon:

 Name: John Doe Age: 30 Height: 1.80 

únia:

Odvodený dátový typ nazývaný a únie umožňuje uložiť rôzne typy údajov na rovnakú pamäťovú adresu. Na rozdiel od štruktúr, kde má každý člen samostatný pamäťový priestor, všetci členovia únie zdieľajú jeden pamäťový priestor. Hodnotu môže mať v danom momente len jeden člen odborov. Keď potrebujete zameniteľne reprezentovať veľa typov údajov, zjednotenie príde vhod. Rovnako ako štruktúry, môžete pristupovať k členom únie pomocou bodka (.) operátor.

Tu je príklad spojenia, ktoré je deklarované a používané:

 #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; } 

Výkon:

 Integer Value: 42 Float Value: 3.14 

Typ údajov enumerácie

Množina pomenovaných konštánt resp sčítačov ktoré predstavujú kolekciu spojených hodnôt, možno definovať v C pomocou enumeračný dátový typ (enum). Enumerácie vám poskytnú prostriedky na pridelenie názvov, ktoré dávajú zmysel skupine integrálnych hodnôt, čo uľahčuje čítanie a údržbu vášho kódu.

Tu je príklad, ako definovať a používať enumeráciu v 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; } 

Výkon:

 Today is 2 

Typ neplatných údajov

The neplatný dátový typ v jazyku C sa používa na označenie nedostatku konkrétneho typu. Typy návratov funkcií, parametre funkcií a ukazovatele sú tri situácie, v ktorých sa často používa.

Typ návratu funkcie:

A neplatný návratový typ funkcia nevytvára hodnotu. A neplatná funkcia vykoná úlohu alebo akciu a skončí namiesto toho, aby vrátil hodnotu.

Príklad:

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

Parametre funkcie:

The parameter neplatný možno použiť na označenie, že funkcia neprijíma žiadne argumenty.

supw

Príklad:

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

Ukazovatele:

Akákoľvek adresa môže byť uložená v ukazovateli typu prázdno* , čím sa stáva univerzálnym ukazovateľom. Ponúka metódu pre prácu s ukazovateľmi na nejednoznačné alebo atypické typy.

Príklad:

 void* dataPtr; 

The neplatný dátový typ je užitočný pri definovaní funkcií, ktoré neakceptujú žiadne argumenty pri práci s generickými ukazovateľmi alebo keď chcete signalizovať, že funkcia nevracia hodnotu. Je dôležité poznamenať, že zatiaľ prázdno* možno použiť na vytvorenie všeobecných ukazovateľov, samotnú hodnotu void nemožno deklarovať ako typ premennej.

Tu je ukážka kódu, ktorý ukazuje, ako využiť void v rôznych situáciách:

 #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; } 

Výkon:

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

Záver:

Ako výsledok, dátové typy sú nevyhnutné v programovacom jazyku C, pretože definujú druhy informácií, ktoré môžu premenné obsahovať. Poskytujú veľkosť a formát údajov, čo umožňuje kompilátoru prideliť pamäť a vykonať potrebné akcie. Typy údajov podporované C zahŕňajú void, enumerácia, odvodený a základné typy . Okrem typov s pohyblivou rádovou čiarkou ako plavák a dvojitý , základné dátové typy v C zahŕňajú aj celočíselné druhy ako int, char a krátky . Tieto formy môžu byť podpísaný alebo nepodpísané a ich veľkosť a rozsah kolíšu. Na vytvorenie spoľahlivého a efektívneho kódu je dôležité pochopiť veľkosť pamäte a rozsah týchto typov.

Niekoľko príkladov odvodené dátové typy odbory, ukazovatele, štruktúry a polia . Viaceré prvky rovnakého druhu môžu byť uložené spolu v súvislej pamäti vďaka poliam. Ukazovatele sledovať adresy pamäte, čo umožňuje rýchle operácie so štruktúrou údajov a dynamické prideľovanie pamäte. Zatiaľ čo odborov umožňujú mnohým premenným zdieľať rovnaký pamäťový priestor, štruktúry zoskupujú relevantné premenné.

tlač javascript

kód sa stáva čitateľnejším a udržiavateľnejším, keď sú pomenované konštanty definované pomocou typov údajov enumerácie. Enumerácie dať pomenovaným konštantám celočíselné hodnoty, ktoré umožnia zmysluplnú reprezentáciu súvisiacich údajov. Typ údajov void označuje nedostatok konkrétneho typu. Používa sa ako návratový typ pre obe funkcie a parametre funkcií ktoré neberú žiadne argumenty a nevracajú hodnotu. The void* ukazovateľ funguje aj ako všeobecný ukazovateľ, ktorý môže adresy obchodov rôznych typov.

Programovanie v C vyžaduje dôkladné pochopenie dátové typy . Programátori môžu zabezpečiť primerané pridelenie pamäte, vyhnúť sa pretečeniu údajov alebo skrátenie a zlepšiť čitateľnosť a udržiavateľnosť ich kódu výberom správneho Dátový typ . C programátori môžu vytvárať efektívne, spoľahlivé a dobre štruktúrovaný kód, ktorý spĺňa požiadavky ich aplikácií tým, že dobre rozumie typom údajov.