logo

Datatyper i C

En datatype angiver den type data, som en variabel kan gemme, såsom heltal, flydende, tegn osv.

C Datatyper

Der er følgende datatyper i C-sprog.

TyperDatatyper
Grundlæggende datatypeint, char, float, double
Afledt datatypearray, pointer, struktur, forening
Optællingsdatatypeenum
Ugyldig datatypeugyldig

Grundlæggende datatyper

De grundlæggende datatyper er heltalsbaserede og flydende kommabaserede. C-sprog understøtter både bogstaver med og uden fortegn.

Hukommelsesstørrelsen for de grundlæggende datatyper kan ændre sig i henhold til 32- eller 64-bit operativsystem.

forskel på en løve og en tiger

Lad os se de grundlæggende datatyper. Dens størrelse er angivet ifølge 32-bit arkitektur .

DatatyperHukommelsesstørrelseRækkevidde
char 1 byte-128 til 127
signeret char1 byte-128 til 127
usigneret char1 byte0 til 255
kort 2 byte-32.768 til 32.767
underskrevet kort2 byte-32.768 til 32.767
usigneret kort2 byte0 til 65.535
int 2 byte-32.768 til 32.767
underskrevet int2 byte-32.768 til 32.767
usigneret int2 byte0 til 65.535
kort int 2 byte-32.768 til 32.767
underskrevet kort int2 byte-32.768 til 32.767
usigneret kort int2 byte0 til 65.535
lang int 4 byte-2.147.483.648 til 2.147.483.647
underskrevet lang int4 byte-2.147.483.648 til 2.147.483.647
usigneret lang int4 byte0 til 4.294.967.295
flyde 4 byte
dobbelt 8 byte
lang dobbelt 10 byte

Int:

Heltal er hele tal uden brøk- eller decimaldele, og int datatype bruges til at repræsentere dem.

Det anvendes ofte på variabler, der inkluderer værdier , såsom tæller, indekser , eller andre numeriske tal. Det int datatype kan repræsentere begge dele positiv og negative tal fordi den er underskrevet som standard.

An int tager op 4 bytes hukommelse på de fleste enheder, hvilket gør det muligt at lagre værdier mellem omkring -2 milliarder og +2 milliarder.

Char:

Individuelle karakterer er repræsenteret af char datatype . Bruges typisk til at holde ASCII eller UTF-8-kodningsskemategn , såsom bogstaver, tal, symboler , eller kommaer . Der er 256 tegn der kan repræsenteres af et enkelt tegn, som optager en byte hukommelse. Karakterer som f.eks 'A', 'b', '5', eller '$' er omgivet af enkelte citater.

Flyde:

For at repræsentere heltal skal du bruge flydende datatype . Flydende tal kan bruges til at repræsentere brøkenheder eller tal med decimaler.

java server sider

Det flydetype bruges normalt til variabler, der kræver meget god præcision, men som måske ikke er særlig præcise. Den kan gemme værdier med en nøjagtighed på ca 6 decimaler og en række på ca 3,4 x 1038 i 4 bytes af hukommelsen.

Dobbelt:

Brug to datatyper til at repræsentere to flydende heltal . Når der er behov for yderligere præcision, såsom i videnskabelige beregninger eller økonomiske applikationer, giver det større nøjagtighed sammenlignet med float.

Dobbelt type , som bruger 8 bytes af hukommelse og har en nøjagtighed på ca 15 decimaler, giver større værdier . C behandler flydende kommatal som fordobling som standard, hvis der ikke er angivet nogen eksplicit type.

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

I eksemplet ovenfor erklærer vi fire variable: an int variabel for personens alder, en char variabel for elevens karakter, en flyde variabel for temperaturaflæsningen og to variabler for nummer pi.

Afledt datatype

Ud over de grundlæggende datatyper understøtter C også afledte datatyper, inklusive arrays, pointere, strukturer, og fagforeninger . Disse datatyper giver programmører mulighed for at håndtere heterogene data, direkte modificere hukommelse og bygge komplicerede datastrukturer.

Array:

An array, en afledt datatype , lader dig gemme en sekvens af elementer i fast størrelse af samme type. Det giver en mekanisme til at forbinde flere mål med de samme data under samme navn.

Indekset bruges til at få adgang til elementerne i arrayet med en 0 indeks for den første indgang. Størrelsen af ​​arrayet er fastsat på deklarationstidspunktet og kan ikke ændres under programafviklingen. Array-komponenterne er placeret i tilstødende hukommelsesområder.

Her er et eksempel på deklaration og brug af et array:

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

Pointer:

EN pointer er en afledt datatype, der holder styr på en anden datatypes hukommelsesadresse. Når en pointer er erklæret, den datatype det henviser til er anført først , og derefter variabel navn er forudgået af en stjerne (*) .

Du kan have forkert adgang og ændre værdien af ​​variabel ved hjælp af pointere ved at angive variablens hukommelsesadresse. Pointer er almindeligt anvendt i opgaver såsom funktionspointere, datastrukturer , og dynamisk hukommelsesallokering .

Her er et eksempel på deklaration og brug af en pointer:

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

Produktion:

 Value of num: 42 

Struktur:

En struktur er en afledt datatype, der muliggør oprettelse af sammensatte datatyper ved at tillade gruppering af mange datatyper under et enkelt navn. Det giver dig mulighed for at skabe dine egne unikke datastrukturer ved at sammensmelte variabler af forskellig art.

css centrering af et billede
  1. En strukturs medlemmer eller felter bruges til at henvise til hver variabel i den.
  2. Enhver datatype, inklusive forskellige strukturer, kan være medlem af en struktur.
  3. En strukturs medlemmer kan tilgås ved at bruge prik (.) operatoren.

En erklæring og brug af en struktur er demonstreret her:

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

Produktion:

 Name: John Doe Age: 30 Height: 1.80 

Union:

En afledt datatype kaldet a Union giver dig mulighed for at gemme forskellige datatyper i den samme hukommelsesadresse. I modsætning til strukturer, hvor hvert medlem har et separat hukommelsesrum, deler medlemmer af en fagforening alle et enkelt hukommelsesrum. En værdi kan kun besiddes af ét medlem af en fagforening på et givet tidspunkt. Når du skal repræsentere mange datatyper i flæng, er fagforeninger nyttige. Ligesom strukturer kan du få adgang til medlemmer af en fagforening ved at bruge prik (.) operatør.

Her er et eksempel på, at en fagforening bliver erklæret og brugt:

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

Produktion:

 Integer Value: 42 Float Value: 3.14 

Optællingsdatatype

Et sæt navngivne konstanter eller tællere der repræsenterer en samling af forbundne værdier, kan defineres i C ved hjælp af optællingsdatatype (enum). Optællinger give dig midlerne til at give navne, der giver mening til en gruppe af integrerede værdier, hvilket gør din kode lettere at læse og vedligeholde.

Her er et eksempel på, hvordan man definerer og bruger en opregning i 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; } 

Produktion:

 Today is 2 

Ugyldig datatype

Det ugyldig datatype i C-sproget bruges til at betegne manglen på en bestemt type. Funktionsreturtyper, funktionsparametre , og pointer er tre situationer, hvor det ofte bruges.

Funktionsreturtype:

EN ugyldig returtype funktion producerer ikke en værdi. EN ugyldig funktion udfører en opgave eller handling og afslutter i stedet for at returnere en værdi.

Eksempel:

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

Funktionsparametre:

Det parameter ugyldig kan bruges til at angive, at en funktion ikke accepterer argumenter.

Eksempel:

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

Pointer:

Enhver adresse kan gemmes i en pointer af typen ugyldig* , hvilket gør det til en universel pointer. Det tilbyder en metode til at arbejde med pointere til flertydige eller atypiske typer.

Eksempel:

 void* dataPtr; 

Det ugyldig datatype er nyttig til at definere funktioner, der ikke accepterer nogen argumenter, når du arbejder med generiske pointere, eller når du ønsker at signalere, at en funktion ikke returnerer en værdi. Det er vigtigt at bemærke, at mens ugyldig* kan bruges til at bygge generiske pointere, selve void kan ikke erklæres som en variabeltype.

Her er et eksempel på kode, der viser, hvordan man bruger void i forskellige situationer:

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

Produktion:

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

Konklusion:

Som resultat, datatyper er essentielle i programmeringssproget C, fordi de definerer den slags information, som variabler kan indeholde. De giver dataens størrelse og format, hvilket gør det muligt for compileren at tildele hukommelse og udføre de nødvendige handlinger. Datatyper understøttet af C omfatter tomhed, opregning, afledt , og grundlæggende typer . Ud over floating-point typer som flyde og dobbelt , grundlæggende datatyper i C inkluderer også heltalsbaserede typer som int, char , og kort . Disse former kan være underskrevet eller usigneret , og de svinger i størrelse og rækkevidde. For at skabe pålidelig og effektiv kode er det afgørende at forstå hukommelsesstørrelsen og omfanget af disse typer.

Et par eksempler på afledte datatyper er fagforeninger, pointer, strukturer , og arrays . Flere elementer af samme slags kan gemmes sammen i sammenhængende hukommelse på grund af arrays. Pointer holde styr på hukommelsesadresser, hvilket giver mulighed for hurtige datastrukturoperationer og dynamisk hukommelsesallokering. Mens fagforeninger tillade mange variabler at dele den samme hukommelsesplads, strukturer grupperer relevante variabler sammen.

Kode bliver mere læselig og vedligeholdelig, når navngivne konstanter defineres ved hjælp af opregningsdatatyper. Optællinger Giv navngivne konstanter heltalværdier for at muliggøre en meningsfuld repræsentation af relaterede data. Den ugyldige datatype angiver manglen på en bestemt type. Den bruges som returtype for begge funktioner og funktionsparametre der ikke tager nogen argumenter og ikke returnerer en værdi. Det tom* pointer fungerer også som en generel pointer, der kan butiksadresser af forskellige typer.

C-programmering kræver en solid forståelse af datatyper . Programmører kan sikre tilstrækkelig hukommelsesallokering, undgå dataoverløb eller trunkering , og forbedre læsbarheden og vedligeholdelsen af ​​deres kode ved at vælge den rigtige datatype . C-programmører kan oprette effektiv, pålidelig , og velstruktureret kode, der opfylder kravene til deres applikationer ved at have en solid forståelse af datatyper.