Inicialização fácil de array de ponteiros em C:dicas e práticas recomendadas
Um ponteiro é uma variável que armazena o endereço de outra variável. O nome da variável ponteiro deve ser prefixado pelo símbolo "*". Assim como no caso de uma variável normal, também podemos declarar um “array de ponteiros”, onde cada subscrito do array contém o endereço de um tipo de array.
Como inicializar um array de ponteiros em C?
Uma variável ponteiro pode ser inicializada no momento da declaração, atribuindo-lhe o endereço de uma variável existente. O trecho a seguir mostra como você pode inicializar um ponteiro -
06
Por padrão, todas as variáveis, incluindo as variáveis de ponteiro, pertencem à "classe de armazenamento automático". Isso significa que uma variável de ponteiro armazenará um endereço de memória imprevisível, lixo e aleatório, o que pode levar a um comportamento indefinido e riscos potenciais para um programa, como erros de falha de segmentação. Portanto, deve ser inicializado com NULL se não tivermos um valor específico para armazenar no momento da declaração.
16
Uma "matriz de ponteiros" armazena o endereço em cada elemento. O tipo da matriz deve corresponder ao tipo da variável de destino.
Inicializar matriz de ponteiros usando palavra-chave estática
Você também pode usar a palavra-chave estática para inicializar uma matriz de ponteiros para armazenar “0” em cada subscrito.
Exemplo
23Saída
Execute o código e verifique sua saída -
37Inicializar matriz de ponteiros inteiros
Aqui, declaramos um array de ponteiros inteiros e armazenamos os endereços de três variáveis inteiras.
Exemplo
46Saída
Execute o código e verifique sua saída -
54Inicializar matriz de ponteiro por endereços diretos
Podemos armazenar o endereço de cada elemento de um array normal no elemento correspondente de um array de ponteiros.
Exemplo
66Saída
Execute o código e verifique sua saída -
78Atravessando um array com seu endereço base
Quando obtemos o endereço base de um array (neste caso "&arr[0]"), podemos obter os endereços de seus elementos subsequentes, sabendo que o ponteiro aumenta de acordo com o tamanho do tipo de dado.
Assim, apenas com o endereço base (o nome do array é igual ao endereço do 0º elemento), podemos percorrer um array.
Exemplo 1
Dê uma olhada no exemplo a seguir -
85Saída
Execute o código e verifique sua saída -
95Exemplo 2:Percorrendo um array 2D usando um array de ponteiros
Neste exemplo, temos um array 2D. O endereço do 0º elemento de cada linha é armazenado em uma matriz de ponteiros. Ao percorrer, o endereço armazenado em cada elemento da matriz de ponteiros, que aponta para o 0º elemento da linha correspondente, cada um incrementado para buscar os valores em cada linha.
103Saída
Quando você executa este código, ele produzirá a seguinte saída -
110Exemplo 3
Nós realmente não precisamos de um array de ponteiros aqui, pois podemos usar o nome deste array 2D como seu ponteiro base e incrementá-lo linha e coluna para buscar os elementos no array 2D fornecido -
125Saída
A saída é semelhante à do código anterior -
139Inicializar matriz de ponteiros de caracteres (string)
Na programação C, uma string é uma matriz do tipo de dados char. Como o nome de um array também representa o endereço de seu 0º elemento, uma string pode ser declarada como -
142
Usando a notação de ponteiro, uma string é atribuída a um ponteiro char como -
155
Podemos então declarar um array de ponteiros char para armazenar múltiplas strings da seguinte forma -
161Exemplo
O exemplo a seguir possui uma matriz de ponteiros char que é usada para armazenar os nomes de linguagens de computador -
174Saída
Quando você executa este código, ele produzirá a seguinte saída -
182
Neste programa, “langs” é um ponteiro para um array de 10 strings. Portanto, se "langs[0]" apontar para o endereço 5000, então "langs + 1" apontará para o endereço 5004 que armazena o ponteiro para a segunda string.
Portanto, também podemos usar a seguinte variação do loop para imprimir o array de strings -
193Inicialização de matriz dinâmica de ponteiros
Você pode usar a função malloc() para declarar e inicializar um array de ponteiros de forma dinâmica.
Exemplo
Dê uma olhada no exemplo a seguir -
208Saída
Quando você executa este código, ele produzirá a seguinte saída -
215
Você pode até solicitar a entrada do usuário e atribuir os valores aos elementos no ponteiro dos arrays -
225
Operadores de incremento e decremento Master C:uso e práticas recomendadas Dominando ponteiros constantes e ponteiros para constantes em C
Linguagem C
- Dominando ponteiros de caracteres e uso de funções em C
- C# - Matrizes
- C - Tipos de dados
- C União
- Escopo da variável C#
- Dominando ponteiros e matrizes multidimensionais em C
- Funções virtuais C++
- Tutorial C# ArrayList com exemplos
- Operadores em C++ com Exemplo:O que é, Tipos e Programas
- C Funções da Biblioteca Padrão