# Outros Tipos de Dados

Além dos tipos primitivos, C oferece várias formas de construir novos tipos de dados. Por exemplo:

* Você pode definir **ponteiros**, valores que representam os endereços de outros dados (veja [*Ponteiros*](#user-content-fn-1)[^1]).
* Pode definir **estruturas**, como em muitas outras linguagens (veja [*Estruturas*](#user-content-fn-1)[^1]).
* Pode criar **uniões**, que definem múltiplas formas de interpretar o conteúdo do mesmo espaço de memória (veja [*Uniões*](#user-content-fn-1)[^1]).
* **Enumerações** são coleções de códigos inteiros nomeados (veja [*Tipos de Enumeração*](#user-content-fn-1)[^1]).

Os tipos de **arrays** em C são usados para alocar espaço para objetos, mas C não permite operar sobre um valor de array como um todo. Veja [*Arrays*](#user-content-fn-1)[^1].

{% hint style="info" %}
O último parágrafo explica que não podemos fazer coisas como `int array[] = 10` em C (não conheço linguagem que permita operar arrays assim). Por serem conjunto de dados, é preciso operar sobre seus elementos, por exemplo, `array[0] = 10`.
{% endhint %}

[^1]: Pendente de tradução


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mentebinaria.gitbook.io/manual-da-linguagem-gnu-c/11.-tipos-primitivos/outros-tipos-de-dados.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
