logo

Tipi di dati in C

Un tipo di dati specifica il tipo di dati che una variabile può memorizzare come numeri interi, mobili, caratteri, ecc.

Tipi di dati C

Esistono i seguenti tipi di dati nel linguaggio C.

TipiTipi di dati
Tipo di dati di baseint, carattere, float, double
Tipo di dati derivatoarray, puntatore, struttura, unione
Tipo di dati di enumerazioneenum
Tipo di dati nullovuoto

Tipi di dati di base

I tipi di dati di base sono basati su numeri interi e basati su virgola mobile. Il linguaggio C supporta letterali sia firmati che non firmati.

La dimensione della memoria dei tipi di dati di base può variare a seconda del sistema operativo a 32 o 64 bit.

peso di kat timpf

Vediamo i tipi di dati di base. La sua dimensione è data secondo l'architettura a 32 bit .

Tipi di datiDimensione della memoriaAllineare
car 1 byteda −128 a 127
firmato car1 byteda −128 a 127
carattere non firmato1 byteda 0 a 255
corto 2 byteDa −32.768 a 32.767
firmato breve2 byteDa −32.768 a 32.767
breve non firmato2 byteDa 0 a 65.535
int 2 byteDa −32.768 a 32.767
firmato int2 byteDa −32.768 a 32.767
intero senza segno2 byteDa 0 a 65.535
breve int 2 byteDa −32.768 a 32.767
firmato breve int2 byteDa −32.768 a 32.767
int breve senza segno2 byteDa 0 a 65.535
lungo int 4 byteDa -2.147.483.648 a 2.147.483.647
firmato lungo int4 byteDa -2.147.483.648 a 2.147.483.647
int lungo senza segno4 byteda 0 a 4.294.967.295
galleggiante 4 byte
Doppio 8 byte
doppio lungo 10 byte

Interno:

Numeri interi sono numeri interi senza parti frazionarie o decimali e il tipo di dati int serve per rappresentarli.

Viene spesso applicato a variabili che includono valori , ad esempio conteggi, indici o altri numeri numerici. IL tipo di dati int possono rappresentare entrambi positivo E numeri negativi perché è firmato per impostazione predefinita.

UN int occupa 4 byte di memoria sulla maggior parte dei dispositivi, consentendogli di archiviare valori compresi tra circa -2 miliardi e +2 miliardi.

Carattere:

I singoli caratteri sono rappresentati da tipo di dati char . Tipicamente utilizzato per contenere ASCII O Caratteri dello schema di codifica UTF-8 , ad esempio lettere, numeri, simboli , O virgole . Ci sono 256 caratteri che può essere rappresentato da un singolo carattere, che occupa un byte di memoria. Personaggi come 'A', 'b', '5', O '$' sono racchiusi tra virgolette singole.

Galleggiante:

Per rappresentare numeri interi, utilizzare il tipo di dati mobile . I numeri mobili possono essere utilizzati per rappresentare unità frazionarie o numeri con cifre decimali.

IL tipo galleggiante viene solitamente utilizzato per variabili che richiedono un'ottima precisione ma che potrebbero non essere molto precise. Può memorizzare valori con una precisione di circa 6 cifre decimali e una gamma di circa 3,4×1038 In 4 byte di memoria.

tabella ascii java

Doppio:

Utilizza due tipi di dati per rappresentare due numeri interi mobili . Quando è necessaria maggiore precisione, come nei calcoli scientifici o nelle applicazioni finanziarie, fornisce una maggiore precisione rispetto al float.

Doppio tipo , che utilizza 8 byte di memoria e ha una precisione di circa 15 cifre decimali, produce valori più grandi . C tratta i numeri in virgola mobile come doppi per impostazione predefinita se non viene fornito alcun tipo esplicito.

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

Nell'esempio sopra, dichiariamo quattro variabili: an variabile intera per l'età della persona, a variabile carattere per il voto dello studente, a variabile float per la lettura della temperatura, e due variabili per la numero pi.

Tipo di dati derivato

Oltre ai tipi di dati fondamentali, C supporta anche tipi di dati derivati, Compreso array, puntatori, strutture, E sindacati . Questi tipi di dati offrono ai programmatori la capacità di gestire dati eterogenei, modificare direttamente la memoria e creare strutture dati complicate.

Vettore:

UN array, un tipo di dati derivato , consente di memorizzare una sequenza di elementi a dimensione fissa dello stesso tipo. Fornisce un meccanismo per unire più destinazioni degli stessi dati con lo stesso nome.

L'indice viene utilizzato per accedere agli elementi dell'array, con a 0 indice per il primo ingresso. La dimensione dell'array è fissa al momento della dichiarazione e non può essere modificata durante l'esecuzione del programma. I componenti dell'array vengono posizionati in regioni di memoria adiacenti.

Ecco un esempio di dichiarazione e utilizzo di un 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;>

Puntatore:

UN puntatore è un tipo di dati derivato che tiene traccia dell'indirizzo di memoria di un altro tipo di dati. Quando un puntatore viene dichiarato, il tipo di dati si riferisce a è dichiarato per primo , e poi il nome della variabile è preceduto da un asterisco (*) .

È possibile avere un accesso errato e modificare il valore della variabile utilizzando i puntatori specificando l'indirizzo di memoria della variabile. Puntatori sono comunemente usati in compiti ad esempio puntatori a funzioni, strutture dati , E allocazione dinamica della memoria .

Ecco un esempio di dichiarazione e utilizzo di un puntatore:

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

Produzione:

 Value of num: 42 

Struttura:

Una struttura è un tipo di dati derivato che consente la creazione di tipi di dati compositi consentendo il raggruppamento di molti tipi di dati sotto un unico nome. Ti dà la possibilità di creare le tue strutture dati uniche fondendo insieme variabili di vario tipo.

alternativa a mylivecricket
  1. I membri o i campi di una struttura vengono utilizzati per fare riferimento a ciascuna variabile al suo interno.
  2. Qualsiasi tipo di dati, incluse strutture diverse, può essere membro di una struttura.
  3. È possibile accedere ai membri di una struttura utilizzando l'operatore punto (.).

Una dichiarazione e l'uso di una struttura sono dimostrati qui:

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

Produzione:

 Name: John Doe Age: 30 Height: 1.80 

Unione:

Un tipo di dati derivato chiamato a unione consente di memorizzare diversi tipi di dati nello stesso indirizzo di memoria. A differenza delle strutture, in cui ogni membro ha uno spazio di memoria separato, i membri di un'unione condividono tutti un unico spazio di memoria. Un valore può essere detenuto solo da un membro di un sindacato in un dato momento. Quando è necessario rappresentare molti tipi di dati in modo intercambiabile, le unioni tornano utili. Come le strutture, puoi accedere ai membri di un'unione utilizzando il file punto (.) operatore.

Ecco un esempio di unione dichiarata e utilizzata:

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

Produzione:

 Integer Value: 42 Float Value: 3.14 

Tipo di dati di enumerazione

Un insieme di costanti denominate o enumeratori che rappresentano una raccolta di valori connessi possono essere definiti in C utilizzando il metodo tipo di dati di enumerazione (enum). Enumerazioni darti i mezzi per dare nomi che abbiano senso a un gruppo di valori integrali, il che rende il tuo codice più facile da leggere e mantenere.

Ecco un esempio di come definire e utilizzare un'enumerazione in C:

git aggiungi --all
 #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; } 

Produzione:

 Today is 2 

Tipo di dati nullo

IL tipo di dati void nel linguaggio C viene utilizzato per denotare la mancanza di un tipo particolare. Tipi restituiti dalle funzioni, parametri delle funzioni , E puntatori sono tre situazioni in cui viene utilizzato frequentemente.

Tipo di restituzione della funzione:

UN tipo di reso nullo la funzione non produce un valore. UN funzione del vuoto esegue un'attività o un'azione e termina anziché restituire un valore.

Esempio:

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

Parametri di funzione:

IL parametro nullo può essere utilizzato per indicare che una funzione non accetta argomenti.

Esempio:

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

Puntatori:

Qualsiasi indirizzo può essere memorizzato in un puntatore di tipo vuoto* , rendendolo un puntatore universale. Offre un metodo per lavorare con puntatori a tipi ambigui o atipici.

Esempio:

 void* dataPtr; 

IL tipo di dati void è utile per definire funzioni che non accettano argomenti quando si lavora con puntatori generici o quando si desidera segnalare che una funzione non restituisce un valore. È significativo notare che mentre vuoto* può essere utilizzato per creare puntatori generici, void stesso non può essere dichiarato come tipo di variabile.

Ecco un esempio di codice che mostra come utilizzare void in varie situazioni:

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

Produzione:

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

Conclusione:

Di conseguenza, tipi di dati sono essenziali nel linguaggio di programmazione C perché definiscono il tipo di informazioni che le variabili possono contenere. Forniscono la dimensione e il formato dei dati, consentendo al compilatore di allocare memoria ed eseguire le azioni necessarie. I tipi di dati supportati da C includono vuoto, enumerazione, derivato , E tipologie fondamentali . Oltre ai tipi a virgola mobile come galleggiante E Doppio , i tipi di dati di base in C includono anche tipi basati su numeri interi come int, car , E corto . Queste forme possono essere firmato O non firmato e variano in dimensioni e portata. Per creare codice affidabile ed efficiente, è fondamentale comprendere le dimensioni della memoria e l'ambito di questi tipi.

quadro di raccolta Java

Alcuni esempi di tipi di dati derivati Sono unioni, puntatori, strutture , E matrici . Più elementi dello stesso tipo possono essere archiviati insieme in memoria contigua grazie agli array. Puntatori tenere traccia degli indirizzi di memoria, consentendo operazioni veloci sulla struttura dei dati e allocazione dinamica della memoria. Mentre sindacati consentono a numerose variabili di condividere lo stesso spazio di memoria, le strutture raggruppano insieme le variabili rilevanti.

Codice diventa più leggibile e gestibile quando le costanti denominate vengono definite utilizzando i tipi di dati di enumerazione. Enumerazioni fornire valori interi alle costanti denominate per consentire la rappresentazione significativa dei dati correlati. Il tipo di dati void indica la mancanza di un tipo particolare. Viene utilizzato come tipo di ritorno per entrambi funzioni E parametri di funzione che non accettano argomenti e non restituiscono un valore. IL puntatore void* funziona anche come puntatore generale che può indirizzi di negozi di vario tipo.

La programmazione C richiede una solida conoscenza di tipi di dati . I programmatori possono garantire un'adeguata allocazione della memoria, evitare eccesso di dati O troncamento e migliorare la leggibilità e la manutenibilità del codice selezionando l'opzione giusta tipo di dati . I programmatori C possono creare efficace, affidabile e un codice ben strutturato che soddisfa i requisiti delle loro applicazioni avendo una solida conoscenza dei tipi di dati.