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

Endereços e ponteiros de passagem C

Endereços e ponteiros da passagem C


Neste tutorial, você aprenderá a passar endereços e ponteiros como argumentos para funções com a ajuda de exemplos.

Na programação C, também é possível passar endereços como argumentos para funções.

Para aceitar esses endereços na definição da função, podemos usar ponteiros. É porque os ponteiros são usados ​​para armazenar endereços. Vamos dar um exemplo:

Exemplo:passar endereços para funções

#include <stdio.h>
void swap(int *n1, int *n2);

int main()
{
    int num1 = 5, num2 = 10;

    // address of num1 and num2 is passed
    swap( &num1, &num2);

    printf("num1 = %d\n", num1);
    printf("num2 = %d", num2);
    return 0;
}

void swap(int* n1, int* n2)
{
    int temp;
    temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

Ao executar o programa, a saída será:
num1 = 10
num2 = 5

O endereço de num1 e num2 são passados ​​para o swap() função usando swap(&num1, &num2); .

Ponteiros n1 e n2 aceite esses argumentos na definição da função.
void swap(int* n1, int* n2) {
    ... ..
}



Quando *n1 e *n2 são alterados dentro do swap() função, num1 e num2 dentro do main() função também são alteradas.

Dentro do swap() função, *n1 e *n2 trocado. Portanto, num1 e num2 também são trocados.

Observe que swap() não está retornando nada; seu tipo de retorno é void .

Exemplo 2:passando ponteiros para funções

#include <stdio.h>

void addOne(int* ptr) {
  (*ptr)++; // adding 1 to *ptr
}

int main()
{
  int* p, i = 10;
  p = &i;
  addOne(p);

  printf("%d", *p); // 11
  return 0;
}

Aqui, o valor armazenado em p , *p , é 10 inicialmente.

Passamos então o ponteiro p para o addOne() função. O ptr ponteiro obtém este endereço no addOne() função.

Dentro da função, aumentamos o valor armazenado em ptr por 1 usando (*ptr)++; . Desde ptr e p ponteiros têm o mesmo endereço, *p dentro de main() também é 11.

Linguagem C

  1. Palavras-chave e identificadores C#
  2. Operadores C# Bitwise e Bit Shift
  3. Classe e objeto C#
  4. Classe abstrata e método C#
  5. C# Classe Parcial e Método Parcial
  6. Classe e método selados em C#
  7. Passar arrays para uma função em C
  8. Ponteiros C
  9. Relação entre arrays e ponteiros
  10. Estruturas e ponteiros C