logo

Tipus de dades en C

Un tipus de dades especifica el tipus de dades que pot emmagatzemar una variable, com ara nombre enter, flotant, caràcter, etc.

C Tipus de dades

Hi ha els següents tipus de dades en llenguatge C.

TipusTipus de dades
Tipus de dades bàsicsint, char, float, double
Tipus de dades derivadesmatriu, punter, estructura, unió
Tipus de dades d'enumeracióenumeració
Tipus de dades nulsbuit

Tipus de dades bàsics

Els tipus de dades bàsics es basen en nombres enters i en coma flotant. El llenguatge C admet tant literals signats com sense signes.

La mida de la memòria dels tipus de dades bàsics pot canviar segons el sistema operatiu de 32 o 64 bits.

connectar-se a una base de dades java

Vegem els tipus de dades bàsics. La seva mida està donada segons l'arquitectura de 32 bits .

Tipus de dadesMida de la memòriaInterval
char 1 byte−128 a 127
caràcter signat1 byte−128 a 127
caràcter sense signar1 byte0 a 255
curt 2 bytes−32.768 a 32.767
signat curt2 bytes−32.768 a 32.767
curt sense signar2 bytes0 a 65.535
int 2 bytes−32.768 a 32.767
signat int2 bytes−32.768 a 32.767
int sense sign2 bytes0 a 65.535
curt int 2 bytes−32.768 a 32.767
signat curt int2 bytes−32.768 a 32.767
curt sense signar int2 bytes0 a 65.535
llarg int 4 bytes-2.147.483.648 a 2.147.483.647
signat llarg int4 bytes-2.147.483.648 a 2.147.483.647
unsigned long int4 bytes0 a 4.294.967.295
flotar 4 bytes
doble 8 bytes
doble llarg 10 bytes

Int:

Nombres enters són nombres sencers sense parts fraccionàries o decimals, i els int tipus de dades serveix per representar-los.

S'aplica amb freqüència a variables que inclouen valors , tal com recomptes, índexs , o altres nombres numèrics. El int tipus de dades poden representar tots dos positiu i nombres negatius perquè està signat per defecte.

An int ocupa 4 bytes de memòria a la majoria de dispositius, la qual cosa li permet emmagatzemar valors entre -2 mil milions i +2 mil milions.

Char:

Els personatges individuals estan representats per tipus de dades char . Normalment s'utilitza per aguantar ASCII o Caràcters de l'esquema de codificació UTF-8 , tal com lletres, números, símbols , o comes . N'hi ha 256 caràcters que es pot representar amb un únic caràcter, que ocupa un byte de memòria. Personatges com 'A', 'b', '5', o '$' s'entrega entre cometes simples.

Flotador:

Per representar nombres enters, utilitzeu tipus de dades flotants . Els nombres flotants es poden utilitzar per representar unitats fraccionàries o nombres amb decimals.

El tipus flotador s'acostuma a utilitzar per a variables que requereixen molt bona precisió però que poden no ser molt precises. Pot emmagatzemar valors amb una precisió d'aproximadament 6 decimals i un rang d'aproximadament 3,4 x 1038 en 4 bytes de memòria.

Doble:

Utilitzeu dos tipus de dades per representar dos nombres enters flotants . Quan es necessita una precisió addicional, com en càlculs científics o aplicacions financeres, proporciona una major precisió en comparació amb el flotador.

Tipus doble , que utilitza 8 bytes de memòria i té una precisió d'aproximadament 15 decimals, produeix valors més grans . C tracta els nombres de coma flotant com a dobles per defecte si no se'n proporciona cap tipus explícit.

afegir a la matriu java
 int age = 25; char grade = 'A'; float temperature = 98.6; double pi = 3.14159265359; 

A l'exemple anterior, declarem quatre variables: a variable int per l'edat de la persona, a variable char per a la nota de l'alumne, a variable flotant per a la lectura de temperatura, i dues variables per a la nombre pi.

Tipus de dades derivades

Més enllà dels tipus de dades fonamentals, C també admet tipus de dades derivades, inclòs matrius, punters, estructures, i sindicats . Aquests tipus de dades donen als programadors la capacitat de manejar dades heterogènies, modificar directament la memòria i crear estructures de dades complicades.

Matriu:

An array, un tipus de dades derivades , us permet emmagatzemar una seqüència de elements de mida fixa del mateix tipus. Proporciona un mecanisme per unir diversos objectius de les mateixes dades amb el mateix nom.

L'índex s'utilitza per accedir als elements de la matriu, amb a 0 índex per a la primera entrada. La mida de la matriu es fixa en el moment de la declaració i no es pot canviar durant l'execució del programa. Els components de la matriu es col·loquen en regions de memòria adjacents.

Aquí teniu un exemple de declaració i ús d'una matriu:

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

Apuntador:

A punter és un tipus de dades derivat que fa un seguiment de l'adreça de memòria d'un altre tipus de dades. Quan un punter es declara, el tipus de dades es refereix a és va dir primer , i després el nom de la variable està precedit per un asterisc (*) .

Podeu tenir un accés incorrecte i canviar el valor de la variable mitjançant punters especificant l'adreça de memòria de la variable. Apuntadors s'utilitzen habitualment en tasques tal com punters de funció, estructures de dades , i assignació de memòria dinàmica .

Aquí teniu un exemple de declaració i ús d'un punter:

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

Sortida:

 Value of num: 42 

Estructura:

Una estructura és un tipus de dades derivat que permet la creació de tipus de dades compostos permetent l'agrupació de molts tipus de dades sota un sol nom. Us ofereix la possibilitat de crear les vostres pròpies estructures de dades úniques fusionant variables de diversos tipus.

java convertir char a int
  1. Els membres o camps d'una estructura s'utilitzen per referir-se a cada variable dins d'ella.
  2. Qualsevol tipus de dades, incloses les diferents estructures, pot ser membre d'una estructura.
  3. Es pot accedir als membres d'una estructura mitjançant l'operador de punt (.).

Aquí es mostra una declaració i ús d'una estructura:

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

Sortida:

 Name: John Doe Age: 30 Height: 1.80 

Unió:

Un tipus de dades derivats anomenat a Unió us permet emmagatzemar diversos tipus de dades a la mateixa adreça de memòria. A diferència de les estructures, on cada membre té un espai de memòria separat, tots els membres d'una unió comparteixen un únic espai de memòria. Un valor només el pot tenir un membre d'un sindicat en un moment donat. Quan necessiteu representar molts tipus de dades de manera intercanviable, els sindicats són útils. Igual que les estructures, podeu accedir als membres d'un sindicat mitjançant l' punt (.) operador.

Aquí teniu un exemple de declaració i utilització d'un sindicat:

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

Sortida:

 Integer Value: 42 Float Value: 3.14 

Tipus de dades d'enumeració

Un conjunt de constants anomenades o enumeradors que representen una col·lecció de valors connectats es poden definir en C mitjançant el tipus de dades d'enumeració (enum). Enumeracions donar-vos els mitjans per donar noms que tinguin sentit a un grup de valors integrals, cosa que fa que el vostre codi sigui més fàcil de llegir i mantenir.

Aquí teniu un exemple de com definir i utilitzar una enumeració en 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; } 

Sortida:

avl arbres
 Today is 2 

Tipus de dades nuls

El nul tipus de dades en el llenguatge C s'utilitza per indicar la manca d'un tipus particular. Tipus de retorn de funció, paràmetres de funció , i punters són tres situacions on s'utilitza amb freqüència.

Tipus de retorn de funció:

A tipus de retorn nul la funció no produeix un valor. A funció de buit executa una tasca o acció i acaba en lloc de retornar un valor.

Exemple:

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

Paràmetres de funció:

El paràmetre nul es pot utilitzar per indicar que una funció no accepta arguments.

Exemple:

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

Apunts:

Qualsevol adreça es pot emmagatzemar en un punter de tipus buit* , convertint-lo en un punter universal. Ofereix un mètode per treballar amb punters a tipus ambigus o atípics.

Exemple:

 void* dataPtr; 

El nul tipus de dades és útil per definir funcions que no accepten cap argument quan es treballa amb punters genèrics o quan es vol indicar que una funció no retorna un valor. És significatiu assenyalar que mentre buit* es pot utilitzar per construir punters genèrics, el nul mateix no es pot declarar com a tipus de variable.

Aquí teniu una mostra de codi que mostra com utilitzar el buit en diverses situacions:

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

Sortida:

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

Conclusió:

Com a resultat, tipus de dades són essencials en el llenguatge de programació C perquè defineixen els tipus d'informació que poden contenir les variables. Proporcionen la mida i el format de les dades, permetent al compilador assignar memòria i dur a terme les accions necessàries. Els tipus de dades compatibles amb C inclouen buit, enumeració, derivat , i tipus bàsics . A més dels tipus de coma flotant com flotar i doble , els tipus de dades bàsics en C també inclouen tipus basats en nombres enters com int, char , i curt . Aquestes formes poden ser signat o sense signar , i varien en mida i abast. Per crear codi fiable i eficient, és crucial comprendre la mida de la memòria i l'abast d'aquests tipus.

Uns quants exemples de tipus de dades derivades són unions, punters, estructures , i matrius . Es poden emmagatzemar diversos elements del mateix tipus en memòria contigua a causa de les matrius. Apuntadors fer un seguiment de les adreces de memòria, permetent operacions ràpides d'estructura de dades i assignació de memòria dinàmica. Mentre sindicats permeten que nombroses variables comparteixin el mateix espai de memòria, les estructures agrupen variables rellevants.

Codi es fa més llegible i fàcil de mantenir quan es defineixen constants amb nom mitjançant tipus de dades d'enumeració. Enumeracions doneu valors enters a constants anomenades per permetre la representació significativa de les dades relacionades. El tipus de dades nul indica la manca d'un tipus concret. S'utilitza com a tipus de retorn per a tots dos funcions i paràmetres de funció que no pren cap argument i no retorna cap valor. El punter buit* també funciona com un punter general que pot adreces de botiga de diversos tipus.

llista de creació de java

La programació en C requereix una comprensió sòlida tipus de dades . Els programadors poden assegurar una assignació de memòria adequada, evitar desbordament de dades o truncament , i millora la llegibilitat i el manteniment del seu codi seleccionant el correcte tipus de dades . Els programadors C poden crear eficaç, fiable , i un codi ben estructurat que satisfà els requisits de les seves aplicacions en tenir una comprensió ferma dels tipus de dades.