Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Entendendo a Relação Entre Arrays e Ponteiros em C

Relação Entre Arrays e Ponteiros

Neste tutorial, você aprenderá sobre a relação entre arrays e ponteiros em programação C. Você também aprenderá a acessar elementos de array usando ponteiros.

Antes de aprender sobre a relação entre arrays e ponteiros, certifique-se de conferir estes dois tópicos:


Relação Entre Arrays e Ponteiros

Um array é um bloco de dados sequencial. Vamos escrever um programa para imprimir endereços de elementos do array.

 #include <stdio.h> int main() { int x[4]; int i; for(i = 0; i < 4; ++i) { printf("&x[%d] = %p\n", i, &x[i]); } printf("Endereço do array x: %p", x); return 0; } 

Saída

 &x[0] = 1450734448 &x[1] = 1450734452 &x[2] = 1450734456 &x[3] = 1450734460 Endereço do array x: 1450734448 

Há uma diferença de 4 bytes entre dois elementos consecutivos do array x. É porque o tamanho de int é 4 bytes (no nosso compilador).

Observe que, o endereço de &x[0] e x é o mesmo. É porque o nome da variável x aponta para o primeiro elemento do array.

Entendendo a Relação Entre Arrays e Ponteiros em C

Do exemplo acima, fica claro que &x[0] é equivalente a x. E, x[0] é equivalente a *x.

Similarmente,


Exemplo 1: Ponteiros e Arrays

 #include <stdio.h> int main() { int i, x[6], sum = 0; printf("Digite 6 números: "); for(i = 0; i < 6; ++i) { // Equivalente a scanf("%d", &x[i]); scanf("%d", x+i); // Equivalente a sum += x[i] sum += *(x+i); } printf("Soma = %d", sum); return 0; } 

Quando você executa o programa, a saída será:

 Digite 6 números: 2 3 4 4 12 4 Soma = 29 

Aqui, declaramos um array x de 6 elementos. Para acessar elementos do array, usamos ponteiros.


Na maioria dos contextos, nomes de array decaem para ponteiros. Em palavras simples, nomes de array são convertidos para ponteiros. É por isso que você pode usar ponteiros para acessar elementos de arrays. No entanto, você deve lembrar que ponteiros e arrays não são a mesma coisa.

Existem alguns casos onde nomes de array não decaem para ponteiros. Para saber mais, visite: Quando o nome do array não decai em um ponteiro?


Exemplo 2: Arrays e Ponteiros

 #include <stdio.h> int main() { int x[5] = {1, 2, 3, 4, 5}; int* ptr; // ptr recebe o endereço do terceiro elemento ptr = &x[2]; printf("*ptr = %d \n", *ptr); // 3 printf("*(ptr+1) = %d \n", *(ptr+1)); // 4 printf("*(ptr-1) = %d", *(ptr-1)); // 2 return 0; }

Quando você executa o programa, a saída será:

 *ptr = 3 *(ptr+1) = 4 *(ptr-1) = 2

Neste exemplo, &x[2], o endereço do terceiro elemento, é atribuído ao ponteiro ptr. Portanto, 3 foi exibido quando imprimimos *ptr.

E, imprimir *(ptr+1) nos dá o quarto elemento. Similarmente, imprimir *(ptr-1) nos dá o segundo elemento.


Linguagem C

  1. Big Data e Computação em Nuvem: Como Eles Trabalham Juntos
  2. Ponteiros e Arrays em C++: Dominando a Relação
  3. Programação C: Passando Endereços e Ponteiros para Funções – Guia Prático
  4. Dominando Structs e Ponteiros em C: Guia Prático
  5. Entendendo Desequilíbrio Tensão-Corrente em Motores Elétricos: Causas e Solução de Problemas
  6. Como IoT e Edge Computing Se Complementam
  7. SCADA vs. HMI: Diferenças-Chave e Papel na Indústria 4.0
  8. Entendendo Motores CC vs CA: Diferenças Principais e Guia de Compra
  9. Brasagem vs Solda Branda: Principais Diferenças Explicadas
  10. Motores 2 Tempos vs 4 Tempos: Diferenças Principais Explicadas