mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-09 10:16:35 -03:00
2.5 KiB
2.5 KiB
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 deputs("")
? - 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érmino1
.
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.