Programação - c - roteiros de trabalho
RELATÓRIOS
FUNDAMENTOS DA ESTRUTURA DA INFORMAÇÃO
Obs.: Utilizei a ordem de roteiros do site do professor Abdala.
LAB 1
Exercício 1: Crie um arquivo chamado <ponteiros1.c> utilizando um editor de textos padrão (vi,pico, xemacs, notepad) e digite o seguinte programa:
#include <stdio.h> void main( void )
{
//declaracao de variaveis int x; int y = 100; int *p1, *p2, *p3; printf("O valor de y eh: %d\n", y); printf("O valor de x eh: %d\n", x); //explique o valor de x p1 = &y; p2 = &x; printf("O valor da posicao de memoria apontada por p1 eh: %d\n", *p1); printf("O valor de posicao de memoria apontada por p2 eh: %d\n", *p2); printf("O endereco de p1 eh: %p\n", p1); printf("o endereco de p2 eh: %p\n", p2); printf("o endereco de y eh: %p\n", &y);
*p2 = 100; printf("o novo valor de *p2 eh:%d", *p2); printf("%x %d %d %d \n", p1, *p1+2, **&p1,3**p1, **&p1+4);
}
Responda as seguintes perguntas:
a) Execute o programa várias vezes e explique porque o valor de x varia;
b) Execute o programa várias vezes e explique porque o valor de *p2 varia;
c) Explique o que há de errado com a seguinte linha de comando:
*p2 = 100;
d) Desafio: Explique o funcionamento da seguinte linha do programa:
printf("%x %d %d %d \n", p1, *p1+2, **&p1,3**p1, **&p1+4);
Respostas:
a) Não foi atribuído nenhum valor para x, assim x assume qualquer valor (lixo).
b) Não foi atribuído nenhum valor para x, logo o valor que o ponteiro p2 aponta (x) também irá variar.
c) Não há nada de errado. Para onde o ponteiro p2 aponta assumirá 100.
d) p1: imprime o endereço de p1 em hexadecimal.
*p1+2: imprime o valor apontado por p1 mais 2.
**&p1: imprime o valor de p1.
3**p1: imprime 3 vezes o valor de p1.
**&p1+4: não impreme, pois falta um %d.
Exercício 2: Crie um arquivo chamado <ponteiros2.c> utilizando um editor de textos padrão (vi,pico, xemacs, notepad) e digite o