Introdução
Na programação C, um array de ponteiros (array of pointers) é um array em que cada elemento é um ponteiro para outro tipo de dado, como int, char, float, etc. Neste laboratório, aprenderemos como acessar um array de ponteiros para inteiros e um array de ponteiros para caracteres.
Array de Ponteiros Inteiros
Nesta etapa, acessaremos um array de ponteiros para inteiros. Abra o arquivo main.c no diretório ~/project/ e cole o seguinte código:
#include <stdio.h>
// Declaração global.
const int MAX = 5;
int main() {
printf("\n\n\t\t==== Array of Integer Pointers ====\n\n\n");
int var[] = {10, 20, 30, 40, 50}; // inicializando um array (aqui var) de ponteiros int
int i = 0;
/*
ptr é um array de ponteiros int, ou seja,
armazena o endereço de cada elemento do array
*/
int *ptr[MAX];
for(i = 0; i < MAX; i++) {
/*
Atribui o endereço de cada elemento do array
ao array ptr
*/
ptr[i] = &var[i];
}
for(i = 0; i < MAX; i++) {
/*
ptr[i] armazena o endereço do elemento var[i].
Portanto, *ptr[i] retorna o valor do elemento
armazenado no local ptr[i]
*/
printf("Value of var[%d] = %i\n\n", i, *ptr[i]);
}
printf("\n\n\t\t==== End of Program ====\n\n\n");
return 0;
}
Este programa inicializa um array de ponteiros para inteiros e atribui o endereço de cada elemento do array ao array de ponteiros. Em seguida, ele imprime o valor de cada elemento usando o array de ponteiros.
Array de Ponteiros de Caracteres
Nesta etapa, acessaremos um array de ponteiros para caracteres. Cole o seguinte código após o código da etapa anterior:
#include <stdio.h>
// Declaração global.
const int MAX = 4;
int main() {
printf("\n\n\t\t==== Array of Character Pointers ====\n\n\n");
char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // inicializando um array (aqui names) de ponteiros char
int i = 0;
for(i = 0; i < MAX; i++) {
printf("Value of names[%d] = %s\n\n", i, names[i]);
}
printf("\n\n\t\t==== End of Program ====\n\n\n");
return 0;
}
Este programa inicializa um array de ponteiros para caracteres e atribui o endereço do primeiro caractere de cada string ao array de ponteiros. Em seguida, ele imprime o nome completo de cada elemento usando o array de ponteiros.
Compilar e Executar o Programa
Nesta etapa, compilaremos e executaremos o programa. Abra o terminal e navegue até o diretório ~/project/. Digite o seguinte comando para compilar o programa:
gcc main.c -o main
Após a compilação bem-sucedida, digite o seguinte comando para executar o programa:
./main
Este comando executará o programa e mostrará a saída no terminal:
==== Array of Integer Pointers ====
Value of var[0] = 10
Value of var[1] = 20
Value of var[2] = 30
Value of var[3] = 40
Value of var[4] = 50
==== Array of Character Pointers ====
Value of names[0] = Google
Value of names[1] = Amazon
Value of names[2] = Facebook
Value of names[3] = Apple
==== End of Program ====
Código Completo
#include <stdio.h>
// Declaração global.
const int MAX = 5;
int main() {
printf("\n\n\t\t==== Array of Integer Pointers ====\n\n\n");
int var[] = {10, 20, 30, 40, 50}; // inicializando um array (aqui var) de ponteiros int
int i = 0;
/*
ptr é um array de ponteiros int, ou seja,
ele armazena o endereço de cada elemento do array
*/
int *ptr[MAX];
for(i = 0; i < MAX; i++) {
/*
Atribui o endereço de cada elemento do array
ao array ptr
*/
ptr[i] = &var[i];
}
for(i = 0; i < MAX; i++) {
/*
ptr[i] armazena o endereço do elemento var[i].
Portanto, *ptr[i] retorna o valor do elemento
armazenado na localização ptr[i]
*/
printf("Value of var[%d] = %i\n\n", i, *ptr[i]);
}
printf("\n\n\t\t==== Array of Character Pointers ====\n\n\n");
char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // inicializando um array (aqui names) de ponteiros char
i = 0;
for(i = 0; i < MAX; i++) {
printf("Value of names[%d] = %s\n\n", i, names[i]);
}
printf("\n\n\t\t==== End of Program ====\n\n\n");
return 0;
}
Resumo
Neste laboratório, aprendemos como acessar um array de ponteiros inteiros e um array de ponteiros de caracteres. Um array de ponteiros é um array no qual cada elemento é um ponteiro para outro tipo de dado. Aprendemos como inicializar um array de ponteiros, como atribuir os endereços dos elementos do array a um array de ponteiros e como acessar os elementos do array usando o array de ponteiros.



