| Linha | Codigo |
| 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) |
| 013 | int 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 | } |