logo

Tipos de dados em C

Um tipo de dados especifica o tipo de dados que uma variável pode armazenar, como inteiro, flutuante, caractere, etc.

Tipos de dados C

Existem os seguintes tipos de dados na linguagem C.

TiposTipos de dados
Tipo de dados básicoint, char, float, duplo
Tipo de dados derivadoarray, ponteiro, estrutura, união
Tipo de dados de enumeraçãoenumeração
Tipo de dados nulovazio

Tipos de dados básicos

Os tipos de dados básicos são baseados em números inteiros e em ponto flutuante. A linguagem C suporta literais assinados e não assinados.

O tamanho da memória dos tipos de dados básicos pode mudar de acordo com o sistema operacional de 32 ou 64 bits.

desinstalar angular cli

Vamos ver os tipos de dados básicos. Seu tamanho é dado de acordo com a arquitetura de 32 bits .

Tipos de dadosTamanho da memóriaFaixa
Caracteres 1 byte−128 a 127
caractere assinado1 byte−128 a 127
caracter não identifcado1 byte0 a 255
curto 2 bytes−32.768 a 32.767
assinado brevemente2 bytes−32.768 a 32.767
curto não assinado2 bytes0 a 65.535
interno 2 bytes−32.768 a 32.767
assinado int2 bytes−32.768 a 32.767
int não assinado2 bytes0 a 65.535
curto int 2 bytes−32.768 a 32.767
assinado curto int2 bytes−32.768 a 32.767
int curto não assinado2 bytes0 a 65.535
longo interno 4 bytes-2.147.483.648 a 2.147.483.647
assinado longo int4 bytes-2.147.483.648 a 2.147.483.647
não assinado longo int4 bytes0 a 4.294.967.295
flutuador 4 bytes
dobro 8 bytes
longo duplo 10 bytes

Interno:

Inteiros são números inteiros sem quaisquer partes fracionárias ou decimais, e o tipo de dados interno é usado para representá-los.

É frequentemente aplicado a variáveis ​​que incluem valores , como contagens, índices ou outros números numéricos. O tipo de dados interno pode representar ambos positivo e números negativos porque é assinado por padrão.

Um interno ocupa 4 bytes de memória na maioria dos dispositivos, permitindo armazenar valores entre cerca de -2 bilhões e +2 bilhões.

Caracteres:

Personagens individuais são representados pelo tipo de dados char . Normalmente usado para segurar ASCII ou Caracteres do esquema de codificação UTF-8 , como letras, números, símbolos , ou vírgulas . Há 256 caracteres que pode ser representado por um único caractere, que ocupa um byte de memória. Personagens como 'A', 'b', '5', ou '$' estão entre aspas simples.

Flutuador:

Para representar números inteiros, use o tipo de dados flutuante . Números flutuantes podem ser usados ​​para representar unidades fracionárias ou números com casas decimais.

O tipo flutuante geralmente é usado para variáveis ​​que exigem uma precisão muito boa, mas podem não ser muito precisas. Ele pode armazenar valores com uma precisão de cerca de 6 casas decimais e uma gama de cerca 3,4x1038 em 4 bytes de memória.

Dobro:

Use dois tipos de dados para representar dois inteiros flutuantes . Quando é necessária precisão adicional, como em cálculos científicos ou aplicações financeiras, proporciona maior precisão em comparação com a flutuação.

Tipo duplo , que utiliza 8 bytes de memória e tem uma precisão de cerca de 15 casas decimais, produz valores maiores . C trata os números de ponto flutuante como duplos por padrão se nenhum tipo explícito for fornecido.

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

No exemplo acima, declaramos quatro variáveis: uma variável interna para a idade da pessoa, um variável de caractere para a nota do aluno, um variável flutuante para a leitura da temperatura e duas variáveis ​​para a número pi.

formas normais

Tipo de dados derivado

Além dos tipos de dados fundamentais, C também suporta tipos de dados derivados, Incluindo matrizes, ponteiros, estruturas, e sindicatos . Esses tipos de dados dão aos programadores a capacidade de lidar com dados heterogêneos, modificar diretamente a memória e construir estruturas de dados complicadas.

Variedade:

Um array, um tipo de dados derivado , permite armazenar uma sequência de elementos de tamanho fixo do mesmo tipo. Ele fornece um mecanismo para unir vários destinos dos mesmos dados sob o mesmo nome.

O índice é usado para acessar os elementos do array, com um 0 índice para a primeira entrada. O tamanho do array é fixo no momento da declaração e não pode ser alterado durante a execução do programa. Os componentes da matriz são colocados em regiões de memória adjacentes.

Aqui está um exemplo de declaração e utilização de um 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;>

Ponteiro:

A ponteiro é um tipo de dados derivado que controla o endereço de memória de outro tipo de dados. Quando um ponteiro é declarado, o tipo de dados se refere é declarou primeiro , e então o nome variável é precedido por um asterisco (*) .

Você pode ter acesso incorreto e alterar o valor da variável usando ponteiros, especificando o endereço de memória da variável. Ponteiros são comumente usados ​​em tarefas como ponteiros de função, estruturas de dados , e alocação dinâmica de memória .

Aqui está um exemplo de declaração e emprego de um ponteiro:

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

Saída:

 Value of num: 42 

Estrutura:

Uma estrutura é um tipo de dados derivado que permite a criação de tipos de dados compostos, permitindo o agrupamento de muitos tipos de dados sob um único nome. Dá a você a capacidade de criar suas próprias estruturas de dados exclusivas, fundindo variáveis ​​de vários tipos.

java mvc
  1. Os membros ou campos de uma estrutura são usados ​​para fazer referência a cada variável dentro dela.
  2. Qualquer tipo de dados, incluindo diferentes estruturas, pode ser membro de uma estrutura.
  3. Os membros de uma estrutura podem ser acessados ​​usando o operador ponto (.).

Uma declaração e uso de uma estrutura são demonstrados aqui:

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

Saída:

 Name: John Doe Age: 30 Height: 1.80 

União:

Um tipo de dados derivado chamado União permite armazenar vários tipos de dados no mesmo endereço de memória. Em contraste com as estruturas, onde cada membro tem um espaço de memória separado, todos os membros de uma união compartilham um único espaço de memória. Um valor só pode ser detido por um membro de um sindicato em um determinado momento. Quando você precisa representar muitos tipos de dados de forma intercambiável, os sindicatos são úteis. Assim como as estruturas, você pode acessar os membros de um sindicato usando o ponto (.) operador.

Aqui está um exemplo de uma união sendo declarada e usada:

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

Saída:

 Integer Value: 42 Float Value: 3.14 

Tipo de dados de enumeração

Um conjunto de constantes nomeadas ou recenseadores que representam uma coleção de valores conectados podem ser definidos em C usando o tipo de dados de enumeração (enum). Enumerações fornece os meios para dar nomes que façam sentido a um grupo de valores integrais, o que torna seu código mais fácil de ler e manter.

Aqui está um exemplo de como definir e usar uma enumeração em 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; } 

Saída:

 Today is 2 

Tipo de dados nulo

O tipo de dados vazio na linguagem C é usado para denotar a falta de um tipo específico. Tipos de retorno de função, parâmetros de função , e ponteiros são três situações em que é frequentemente utilizado.

Tipo de retorno de função:

A tipo de retorno vazio função não produz um valor. A função vazia executa uma tarefa ou ação e termina em vez de retornar um valor.

Exemplo:

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

Parâmetros de função:

O parâmetro vazio pode ser usado para indicar que uma função não aceita argumentos.

Exemplo:

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

Ponteiros:

Qualquer endereço pode ser armazenado em um ponteiro do tipo vazio* , tornando-o um ponteiro universal. Oferece um método para trabalhar com ponteiros para tipos ambíguos ou atípicos.

Exemplo:

 void* dataPtr; 

O tipo de dados vazio é útil para definir funções que não aceitam argumentos ao trabalhar com ponteiros genéricos ou quando você deseja sinalizar que uma função não retorna um valor. É significativo notar que embora vazio* pode ser usado para construir ponteiros genéricos, o próprio void não pode ser declarado como um tipo de variável.

Aqui está um exemplo de código que mostra como utilizar void em diversas situações:

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

Saída:

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

Conclusão:

Como resultado, tipos de dados são essenciais na linguagem de programação C porque definem os tipos de informações que as variáveis ​​podem conter. Eles fornecem o tamanho e o formato dos dados, permitindo ao compilador alocar memória e realizar as ações necessárias. Os tipos de dados suportados por C incluem vazio, enumeração, derivado , e tipos básicos . Além de tipos de ponto flutuante como flutuador e dobro , os tipos de dados básicos em C também incluem tipos baseados em números inteiros, como int, char , e curto . Esses formulários podem ser assinado ou não assinado , e eles flutuam em tamanho e alcance. Para criar código confiável e eficiente, é crucial compreender o tamanho da memória e o escopo desses tipos.

Alguns exemplos de tipos de dados derivados são sindicatos, ponteiros, estruturas , e matrizes . Vários elementos do mesmo tipo podem ser armazenados juntos em memória contígua devido a matrizes. Ponteiros acompanhe os endereços de memória, permitindo operações rápidas de estrutura de dados e alocação dinâmica de memória. Enquanto sindicatos permitem que inúmeras variáveis ​​compartilhem o mesmo espaço de memória, as estruturas agrupam variáveis ​​relevantes.

Código torna-se mais legível e fácil de manter quando constantes nomeadas são definidas usando tipos de dados de enumeração. Enumerações forneça valores inteiros às constantes nomeadas para permitir a representação significativa de dados relacionados. O tipo de dados void indica a falta de um tipo específico. É usado como um tipo de retorno para ambos funções e parâmetros de função que não aceitam argumentos e não retornam um valor. O ponteiro vazio* também funciona como um ponteiro geral que pode endereços de lojas de vários tipos.

A programação C requer um conhecimento sólido de tipos de dados . Os programadores podem garantir a alocação adequada de memória, evitar estouro de dados ou truncamento e melhore a legibilidade e a manutenção de seu código selecionando o código certo tipo de dados . Programadores C podem criar eficaz, confiável e código bem estruturado que satisfaça os requisitos de seus aplicativos por ter um conhecimento sólido dos tipos de dados.

o que é myspace