LinhaCodigo
001// Prof. Leo^nidas - http://www.matematica.br http://line.ime.usp.br
002// MAC0122 - 2017/09/25
003
004// Introducao aos apontadores em C: explica o uso dos operadores "&" e "*"
005// Explica como funcionam os parametros da funcao "main"
006
007#include <stdio.h>
008
009// A funcao "main" e' o ponto de entrada do programa C e pode ser invocado recebendo parametros e devolvendo um resultado ("int").
010// "int"          => funcao inicial (main) deve devolver inteiro (0 => sem erro; 1 => com erro)
011// "int argc"     => recebera o numero de parametros usados na chamada deste programa C
012// "char *argv[]" => recebera cada parametro usado na chamada deste programa (sendo o primeiro seu proprio nome)
013int main (int argc, char *argv[]) {
014  int n, i, a, b, *ap; // "ap" e' um apontador para variaveis do tipo "int"
015  printf("Parametros usados:\n argc=%d\n", argc);
016  for (i=0; i<argc; i++)
017    printf(" %d : %s\n", i, argv[i]);
018   
019   // O operador "&" implica em pegar o endereco da variavel, nao o seu valor (lembrete, desse modo
020   //   o motivo do "scanf" precisar do endereco da variavel, nao seu valor, e' para poder altera-la com o valor lido)
021   // O operador "*" e' aplicavel apenas `a variaveis apontadoras (para variaveis) e
022   //   implica que deve ser devolvido o conteudo da variavel apontada (pelo apontador)
023   ap = &a;  // (i)  "ap" recebe o endereco reservado a variavel "a" ("ap" aponta para "a")
024   *ap = 10; // (ii) como "ap" aponta para a variavel "a", entao essa ultima posicao de memoria recebera o valor 10
025   printf("%d\n", a); // apenas para conferir a observacao (ii) acima
026   return 0;
027   }