cblc/exercicios/04
2025-03-27 08:26:25 -03:00
..
README.org Atualização de todos os exercícios 2025-03-27 08:26:25 -03:00

Curso Básico da Linguagem C

Exercícios da aula 4: Variáveis e ponteiros

1. Pesquise e responda

  • Existe uma forma para alterar uma variável em uma função a partir de outra função: como fazer isso?
  • Por que as variáveis de uma função, em princípio, são locais à própria função?
  • Se o valor associado a um ponteiro é um endereço, o que termos com a avaliação de &NOME_DO_PONTEIRO?

2. Analise o código, pesquise e responda

Este é mais um "Olá, mundo":

#include <stdio.h>

char *msg = "Salve, simpatia!";

int main(void) {
    puts(msg);
    return 0;
}

Se ponteiros recebem endereços como valores, por que eu fiz a atribuição de uma string e o meu programa funcionou?

3. Compile, analise e demonstre

#include <stdio.h>

int main(void) {

    int a = 0;
    int b = 875569217;
    int c = 1280655661;
    int d = 1129071171;

    char *p = (char *)&d;
    
    int i = 0;
    while (*(p + i) != '\0') {
        putchar(*(p + i));
        i++;
    }
    putchar('\n');

    // printf("%p\n%p\n%p\n%p\n", &d, &c, &b, &a);
    
    return 0;
}
  • Como o código funciona?
  • O que estou tentando imprimir?
  • Com o printf comentado, eu consigo imprimir o que eu quero?
  • Se eu tirar o comentário, eu tenho a impressão que eu quero?
  • Por que acontece essa diferença de comportamento?
  • Como imprimir corretamente apenas o que eu quero?

4. Pesquise e responda

  • Para que serve e como usar a função putchar?
  • Quando e por que utilizar putchar('\n') em vez de puts("")?
  • Como funciona a estrutura de repetição while?
  • Para que servem os especificadores de formato %zu e %p?

5. Desafio: quadrado de um número

Crie um programa que peça a digitação de um número inteiro ao usuário e imprima o quadrado desse número.

Requisitos:

  • O programa deve testar se o número digitado é um inteiro válido.
  • Se não for, o programa deve terminar com uma mensagem enviada para a saída padrão de erros (stderr) e estado de término 1.

Dicas:

  • Utilize a função scanf para ler o número digitado.
  • Existe uma variante do printf que possibilita imprimir na saída de erros em vez da saída padrão.
  • Existe um cabeçalho que define constante com os limites dos tipos inteiros.