C/Punteiros: Diferenzas entre revisións
Contido eliminado Contido engadido
Revisión inicial... |
|||
Liña 1:
{{Navegador|
{| align="right" style="margin-left: 1em;"
Os punteiros son un tipo de variables que non conteñen un valor ou valores, senón que conteñen un enderezo de memoria. Neste enderezo de memoria é onde residen os valores, mentres que o punteiro será simplemente un enderezo. Hai que aprender a traballar tanto co valor que contén o punteiro (o enderezo de memoria) como co valor do espazo de memoria sinalado polo punteiro.▼
| __TOC__
|} <!-- Isto sitúa o índice á dereita -->
▲Os punteiros son un tipo de
==Declaración==
Para declarar un punteiro, sitúase na declaración da variable un asterisco,
<source lang=c>
tipo * identificador;
Liña 10 ⟶ 14:
Onde:
:'''<code>tipo</code>''' é o tipo de dato ao que sinala o punteiro
:'''<code>*</code>''' sinala que se trata dun punteiro
:'''<code>identificador</code>''' é o identificador (nome) do punteiro.
Liña 20 ⟶ 24:
===''Inicialización''===
Considérase unha boa práctica [[{{BASEPAGENAME}}/Variables#
===Punteiro a un punteiro===
Liña 36 ⟶ 40:
===Tamaño===
O tamaño dos punteiros, o que ocupan en memoria, non ven dado polo tipo de dato especificado na [[
O verdadeiro tamaño do punteiro, posto que o punteiro garda un enderezo de memoria, dependerá da arquitectura do sistema operativo, xa que esta define a forma en que o procesador traballa coa memoria. Así, nun sistema de 32 bits, este será o tamaño do punteiro (32 bits = 4 bytes), e nun de 64 bits o tamaño será de 8 bytes.
===Traballar co valor sinalado===
Se queremos traballar ou asignarlle un valor ao espazo de memoria ao que sinala un punteiro (e non ao espazo de memoria que ocupa o punteiro), precédese o identificador do punteiro cun asterisco
<source lang=c>
*punteiro = 0; // Asígnaselle o valor 0 ao espazo de memoria sinalado
Liña 48 ⟶ 52:
===Traballar cos enderezos doutras variables===
Mediante o símbolo
<source lang=c>
// Declaramos unha variable de tipo int:
Liña 60 ⟶ 64:
punteiro = &variable;
</source>
Liña 67 ⟶ 71:
As [[{{BASEPAGENAME}}/Matrices|matrices]] non son máis que unha forma especial de traballar con punteiros. Unha matriz é en realidade un punteiro cuxo valor (o enderezo de memoria ao que sinala) non pode cambiar, e para o que se reserva un certo espazo en memoria estática ao declaralo ─que dependerá do tipo de datos e a cantidade deles que leve a matriz─.
Se se lle asigna a un punteiro
===Matrices de punteiros===
Liña 75 ⟶ 79:
</source>
Isto será unha matriz con 66 celas, cada unha das cales é un punteiro a un dato de tipo carácter ([[{{BASEPAGENAME}}/Tipos fundamentais#char|<
===
Hai certos
▲;punteiro--:<source lang=c>punteiro = punteiro - sizeof(tipo)</source>
▲;punteiro = punteiro + número:<source lang=c>punteiro = punteiro + número * sizeof(tipo)</source>
Estes comportamentos especiais para punteiros permiten moverse comodamente por matrices de datos, etc.
:''Nota:
==Programa de resumo==
Liña 146 ⟶ 147:
==Notas==
<references />
{{Navegador|
<!-- Categorías: -->
[[Categoría:C ─
|