Sie sind auf Seite 1von 4

#include <stdio.h> #include <stdlib.

h> int main() { struct tempo { int hora, minuto, segundo; } t; int segundos; printf("Digite uma medida de tempo em segundos: "); scanf("%i",&segundos); t.segundo = segundos % 60; t.minuto = (segundos / 60) % 60; t.hora = (segundos / 60) / 60; printf("%i h\t%i min\t%i seg\n",t.hora,t.minuto,t.segundo); return 0; } Bibliotecas: stdio.h - stdio.h (acrnimo de standard input/output header ) uma biblioteca que contm funes, macros e constantes padres ao compilador. Todo programa em C que usar funes para entrada ou sada de dados como o resgate de valores digitados pelo usurio ou ento exibio de mensagens de retorno exigir a incluso do cabealho stdio.h. Abaixo vocs encontram uma lista com as principais funes de stdio.h: Lista das principais funes de stdio puts Exibio de mensagem printf Exibio de mensagem formatada getchar Resgate de caractere scanf Resgate formatado stdlib.h - um arquivo cabealho da biblioteca de propsito geral padro da linguagem de programao C. Ela possui funes envolvendo alocao de memria, controle de processos, converses e outras. Ela compatvel com C++ e chamada cstdlib em C++. O nome "stdlib" vem de standard library (standard library biblioteca padro em ingls). Lgica: Int main() a funo de inicializao do programa, o int serve para definir o retorno da funo. Struct Cria uma varivel com 1 ou mais propriedades chamada de objeto no caso do cdigo struct tempo { int hora, minuto, segundo; } t; Ele est criando um registro tempo chamado t, no objeto tempo existem 3 propriedades, hora, minuto e segundo. Scanf - A funo usada para efetuar a leitura de valores a funo scanf que est definida na biblioteca

stdio.h.

scanf("%i",&segundos); O primeiro argumento ("%i") define o tipo do valor que vai ser lido. Para ler um valor inteiro usa-se %d no caso acima ele usou o %i o segundo argumento a varivel precedida de & que recebera o valor lido. Printf uma funo usada para escrever na tela, a string (texto que ir aparecer) definida por (aspas) quando quiser imprimir uma varivel no meio do texto deve-se definir um o tipo de varivel que ser impressa naquela posio e depois colocar a varivel como argumento printf("%i h\t%i min\t%i seg\n",t.hora,t.minuto,t.segundo); Ponteiros O ponteiro nada mais do que uma varivel que guarda o endereo de uma outra varivel. A declarao de ponteiros feita da seguinte forma:

A instruo acima indica que pa um ponteiro do tipo int. Agora veremos como atribuir valor ao ponteiro declarado. Para isto necessrio saber que existem dois operadores unitrios que so utilizados com os ponteiros. O primeiro o operador (*) atravs dele possvel retornar o valor da varivel que est localizada no ponteiro. E o segundo o operador (&) que retorna o endereo de memria que est localizado o valor da variavel contida no ponteiro. Portanto para atribuirmos um valor para o ponteiro necessrio referencia o valor da varivel que se encontra no ponteiro utilizando o operador (*), como ser demonstrado a seguir.

Desta forma estamos atribuindo o valor 24 para a varivel que est contida no ponteiro. Para entender melhor quando e como utilizar os operadores (*) e (&), veja o programa mostrado abaixo.

Sada do programa:

Quando os ponteiros so declarados, eles so inicializados com um endereo no valido, portanto antes de usa-los necessrio atribuir um endereo e isso feito atravs do operador (&) como demonstra a instruo pa=&a e pb=&b que atribui aos ponteiros pa e pb o endereo das varieis a e b. Uma outra novidade do programa anterior quando queremos imprimir o endereo do prprio ponteiro isto feito referenciando pa normalmente. Porm para imprimir o endereo contido no ponteiro usado &pa e por ultimo para imprimir o valor do endereo contido no ponteiro usamos *pa. Atravs do programa abaixo possvel verificar que se pode fazer comparaes entre ponteiros.

Sada do programa:

A comparao entre ponteiros em uma expresso relacional (>=,<=,> e <) possvel quando os dois ponteiros so do mesmo tipo. Isso feito no programa mostrado atravs da linha if (px1>px2), Caso a instruo seja verdadeira ser feita a diferena entre os dois ponteiros px1-px2. E caso seja falso ser feito ao contrario px2-px1. importante dizer que os dados de sada deste programa no so iguais em todos os computadores, depende muito da memria disponvel. Mas como pode-se observar em nosso exemplo, se px1=1245064 e px2=1245060 ento px1-px2 ser igual a um. Isso ocorre, pois a diferena depende da unidade tipo apontado. Para entender melhor, veja alguns casos de operaes com ponteiros. Se um ponteiro do tipo inteiro px1 fosse igual a 150 e que os inteiros possuem dois bytes. As operaes que se podem fazer so as seguintes: Incrementar o ponteiro atravs da expresso:

Isso far com que o ponteiro aponte para a posio do prximo elemento. Como estamos a considerar que o tipo inteiro do tamanho de 2 bytes, o ponteiro est sendo incrementado de 2, ou seja, o nmero de incrementos depende do tamanho do tipo de dados. O mesmo acontece com o decremento, porm aponta para a posio anterior. Isso feito pela instruo: Isso far com que o ponteiro aponte para a posio do prximo elemento. Como estamos a considerar que o tipo inteiro do tamanho de 2 bytes, o ponteiro est sendo incrementado de 2, ou seja, o nmero de incrementos depende do tamanho do tipo de dados. O mesmo acontece com o decremento, porm aponta para a posio anterior. Isso feito pela instruo:

Uma outra opo somar ou diminuir inteiros ao ponteiro:

Dessa forma o ponteiro ir apontar para o quinto elemento do tipo px1 adiante do elemento que o ponteiro estava a apontar. importante saber que no se pode nem multiplicar e nem dividir ponteiros. Do mesmo modo que se tem um ponteiro (que o endereo de uma varivel) pode-se ter ponteiro para ponteiro, ou seja, um ponteiro aponta para um outro ponteiro que finalmente aponta para a varivel com o valor a ser utilizado. O que chamamos de indireo mltipla e pode ser vista no prximo programa.

Dados de sada:

Como visto no cdigo fonte anterior, uma varivel que ponteiro para ponteiro deve ser declarada da seguinte forma:

Da mesma forma para acessar o valor final utilizado o operador * duas vezes, conforme visto no neste exemplo.

Das könnte Ihnen auch gefallen