Академический Документы
Профессиональный Документы
Культура Документы
2
C comparado a outras linguagens
Clareza
Velocidade
C entende tais palavras apenas em letras
minúsculas, ou seja, palavras reservadas
obrigatoriamente devem estar em letras minúsculas.
Bibliotecas
#include “minha_biblioteca.h” ou
#include <minha_biblioteca.h>
Bibliotecas
Diretiva #include permite incluir uma
biblioteca
Bibliotecas contêm funções pré-definidas,
utilizadas nos programas
Exemplos
9
O ambiente Dev-C++
11
Usando o Dev-C++
/* Primeiro Programa em C */
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf(“Meu primeiro programa em C\n”);
}
Estrutura de um programa C
/* Primeiro Programa em C */ comentários
#include <stdio.h> /*biblioteca de E/S */
Para compilar: (verifica a sintaxe)
Executar / compilar ou
Para executar: (exibir tela para usuário)
Executar / Executar ou
Para compilar e executar: (simultaneamente)
Executar/Compilar & Executar ou
Dicas
#include <stdio.h>
main()
{
printf ("Alo mundo!");
system("PAUSE");
}
Variáveis
C é sensível ao caso:
peso <> Peso <> pEso
tipo bytes
char 1
int 2
float 4
double 8
Tipos Básicos de Dados
char 1
int 2
float 4
double 8
Programa Exemplo – Tipos de Dados e
Variáveis
#include <stdio.h>
main( )
{
int soma=10;
float money=2.21;
char letra= ´A´;
double pi=2.01E6;
}
Programando – Exercício 1
system("PAUSE");
}
Comando de atribuição
Função scanf
scanf ("formatos", &var1, &var2,...)
%d inteiro
Exemplos: %f float
int i, j;
%lf double
float x; %c char
char c; %s palavra
char* nome;
scanf("%d", &i);
scanf("%d %f", &j, &x);
scanf("%c", &c);
scanf("%s", nome);
Real: n1, n2, n3, media #include <stdio.h>
main()
{
double n1, n2, n3, media;
n1, n2, n3
ler n1 scanf
scanf("%lf
("%lf",&n1);
%lf %lf",&n1, &n2, &n3);
ler n2 scanf ("%lf",&n2);
ler n3 scanf ("%lf",&n3);
system("PAUSE");
}
Operadores Matemáticos
- x – y Subtrai y de x
* x * y Multiplica x e y
/ x / y Divide x por y
system("PAUSE");
}
Entrada e Saída
Função printf
printf ("formatos", var1, var2,...)
%d inteiro
Exemplos: %f float
int i, j;
%lf double
float x; %c char
char c; %s palavra
char* nome;
printf("%d", i);
printf("%d, %f", j, x);
printf("%c", c);
printf("%s", nome);
Real: n1, n2, n3, media #include <stdio.h>
main()
{
double n1, n2, n3, media;
ler n1
n1, n2, n3 scanf
scanf("%lf
("%lf",&n1);
%lf %lf",&n1, &n2, &n3);
ler n2
media=(n1+n2+n3)/3 scanf ("%lf",&n2);
media=(n1+n2+n3)/3;
ler n3 scanf ("%lf",&n3);
exibir media printf (“%lf”,media);
system("PAUSE");
}
Mãos à Obra!
#include <stdio.h> #include <stdio.h>
main() main()
{ {
double n1, n2, n3, double n1, n2, n3, media;
scanf ("%lfmedia;
%lf %lf", printf(“Digite 3 notas: ”);
&n1, &n2, &n3); scanf ("%lf %lf %lf",&n1, &n2,
&n3);
media=(n1+n2+n3)/3;
media=(n1+n2+n3)/3;
printf (“A média é %0.2lf”,media);
printf (“%lf”,media);
system("PAUSE");
system("PAUSE"); }
}
Exercício
+= x += y Equivale a x = x + y
-= x -= y Equivale a x = x – y
*= x *= y Equivale a x = x * y
/= x /= y Equivale a x = x / y
%= x %= y Equivale a x = x % y
Operadores Lógicos
#include <math.h>
Exercício
Construa um algoritmo que tendo como entrada dois pontos quaisquer do plano P(x1,y1) e
Q(x2,y2), imprima a distância entre eles.
A fórmula da distância é:
Construa um algoritmo que calcule a quantidade de latas de tinta necessárias e o custo para
pintar tanques cilíndricos de combustível, onde são fornecidos a altura e o raio desse cilindro.
Sabendo que:
- a lata de tinta custa 20,00 euros
- cada lata contém 5 litros
- cada litro de tinta pinta 3 metros quadrados.
Sabendo que:
Área do cilindro=3,14*raio2 + 2*3,14*raio*altura
e que raio e altura são dados de entrada.
Operadores Relacionais
Operador Exemplo Comentário
== x == y O conteúdo de x é igual ao de y
!= x != y O conteúdo de x é diferente do de y
#include <stdio.h>
main ( ) Saída: Verd.=1 Falso = 0
{
int verdadeiro, falso;
verdadeiro = (15 < 20);
falso = (15 == 20);
printf(“Verd.= %d,Falso= %d”,
verdadeiro, falso);
}
Comparações e Testes
Se
x = 10; porém Se
x = 10;
y = ++x;
y = x++;
/* x=x+1; y=x; */
/* y=x; x=x+1 */
então então
x = 11 e x = 11 e
y = 11 y = 10
Programa Exemplo – Pré/Pós Incremento
#include<stdio.h>
main()
{
int cont = 0, loop;
loop=++cont;
printf(“Loop=%d, Cont=%d\n”, loop, cont);
loop=cont++;
printf(“Loop=%d, Cont=%d\n”, loop, cont);
Se
x = 1;
y = 2;
printf(“%d == %d e’ %d\n”, x, y, x==y )
VeFF V ou F V Não V F
FeVF F ou V V
FeFF F ou F F
Estruturas de Decisão
if (condição) {
if (a<menor) {
menor=a;
comando1; printf (“%d”, menor);
comando2; }
comando3;
}
em pseudo-código:
se (a<menor) entao menor=a;
Estrutura condicional composta
Executa o comando se a condição for
qualquer coisa diferente de zero!
Comando if...else
if (condição)
comando;
else
if (peso= =peso_ideal)
comando; printf (“Voçê está em forma!”);
else
if (condição) { printf (“Necessário fazer dieta!”);
comando1;
comando2;
} else { em pseudo-código:
comando3; se (peso= =peso_ideal)
comando4; entao exibir “Voçê está em forma!”
} senao exibir “Necessário fazer dieta!”
Exemplo 1: Programa Adulto, Jovem ou Velho.
#include <stdio.h>
main()
{
int i;
printf(“Digite sua idade: “);
scanf(“%d”,&i);
if (i > 70)
printf(“Esta Velho!”);
else
if (i > 21)
printf(“Adulto”);
else
printf(“Jovem”);
}
Exercício
i 7 j 7
(2 * j 1) * i
i 0 j 0 2* j 5
Estrutura de repetição
Comando while
Exemplo:
while (condição) while (N != 0) {
comando; scanf ("%d",&N);
if (N > MAIOR) MAIOR = N;
}
while (condição) {
Pseudo-código:
comando1; MAIOR = 0
N=1
comando2 Enquanto (N <> 0) repetir
comando3; Ler N
Se (N > MAIOR) então MAIOR = N
} Mostrar MAIOR
Exercício
Uma pessoa x tem 1,50 metros e cresce 2 centímetros por
ano, enquanto a pessoa y tem 1,10 metros e cresce tem 3
centímetros por ano. Construa um programa que calcule e
imprima quantos anos serão necessários para que a pessoa y
seja maior que pessoa x.
Escrever um programa que leia, valores inteiros, até ser lido o valor
99. Quando isso acontecer o programa deverá escrever a soma e a
média dos valores lidos.
Estrutura de repetição
Exemplo:
Comando do...while
cont=0;
do { do {
cont = cont + 1;
comando printf("%d\n",cont);
} while (condição); } while (cont < 10);
do { Em pseudo-código:
CONTADOR = 0
comando1; Repetir
CONTADOR = CONTADOR + 1
comando2 exibir CONTADOR
enquanto CONTADOR < 10
comando3;
} while (condição);
Exercício
Declaração:
int v[100];
primeira posição =0;
última posição=99;
Atribuição:
v [9] = 87;
Acessar um valor:
a = v[9];
int v[10];
0
V[5]=10;
1
2 printf (“%d”,V[5]);
3
4
5 10
6
7
8
9
Quando usar?
Calcular a média da nota de 5 alunos e verificar quantos conseguiram nota
acima da média:
#include <stdio.h>
inteiro: cont, soma; main()
{
real: media, num int contA=0;
para cont=1 até 5 repetir double media, n1, n2, n3, n4, n5;
scanf ("%lf %lf %lf %lf %lf",
receber num &n1, &n2, &n3, &n4, &n5);
media = (n1+ n2 + n3 + n4 + n5)/5;
soma = soma + num if (n1>media) contA=contA+1;
if (n2>media) contA=contA+1;
media = soma/cont if (n3>media) contA=contA+1;
if (n4>media) contA=contA+1;
Como verificar se a nota de if (n5>media) contA=contA+1;
cada aluno é maior que a printf ("%lf %d", media, contA);
média?? system("pause");
}
#include <stdio.h>
#include <stdio.h> main()
main()
{
{
int i, contA=0;
int contA=0;
double soma=0, media;
double media, n1, n2, n3, n4, n5;
double v[5];
scanf ("%lf %lf %lf %lf %lf",
&n1, &n2, &n3, &n4, &n5);
for (i=0;i<5;i++) {
media = (n1+ n2 + n3 + n4 + n5)/5;
scanf ("%lf", &v[i]);
if (n1>media) contA=contA+1;
soma = soma + v[i];
if (n2>media) contA=contA+1;
if (n3>media) contA=contA+1; }
system("pause"); }
} printf ("%lf %d\n", media, contA);
system("PAUSE");
}
Exercícios
Dada duas sequências de 5 números, calcule a soma de cada
número com o seu correspondente;
Ler 5 números, armazenando-os no vetor X[5]. Calcular a soma
destes 5 números e mostrá-la na tela;
Ler 5 números, armazenando-os no vetor X[5]. Copiar este vetor,
de trás para frente (na ordem inversa de leitura), em um segundo
vetor Y[5]. Mostrar o vetor Y;
Gerar um vetor com 10 números da seguinte forma: cada número
guardado no vetor será o valor da sua própria posição no vetor(seu
índice) menos 2 (ou seja, Xi = i-2). Mostrar na tela este vetor.
Strings
#include <stdio.h>
main(){
char re[] = "lagarto";
printf ("%s", re);
system("pause");
}
Para ler uma String
Comando gets
#include <stdio.h>
main(){
char re [80];
printf ("Digite o seu nome: ");
gets(re);
printf ("Oi %s\n", re);
system("pause");
}
Para comparar duas strings
strcmp (s1, s2); strcmp retorna 0 se as duas strings são iguais.
Precisa do #include <string.h>
Pode utilizar scanf no lugar do gets, só que o
#include <stdio.h>
scanf não lê espaços em branco.
#include <string.h> Se o usuário digitar:
main( ){ >“Alexandre Costa e Silva”
char re[80]; o scanf vai pegar apenas “Alexandre”.
printf ("Digite a senha: "); O gets pega tudo.
scanf ("%s", &re);
if (strcmp(re,"laranja")==0) {
printf ("Senha correta\n");
}
else {
printf ("Senha invalida\n");
}
system("pause");
}
Para saber o tamanho de uma string
int size = strlen(str);
Retorna um valor inteiro com o número de caracteres da String.
Precisa do #include <string.h>
#include <stdio.h>
#include <string.h>
main(){
char re[80];
printf ("Digite a palavra: ");
scanf ("%s", &re);
int size=strlen(re);
printf ("Esta palavra tem %d caracteres.\n", size);
system("pause");
}
Para copiar o conteúdo de uma string para outra
strcpy(para, de);
Precisa do #include <string.h>
#include <stdio.h>
#include <string.h>
main()
{
char str[80];
strcpy (str, "Alo");
printf ("%s", str);
system("pause");
}
Exercícios
Escreva um programa que leia duas strings e as coloque na
tela. Imprima também a segunda letra de cada string.
Escreva um programa que leia uma string, conte quantos
caracteres desta string são iguais a 'a' e substitua os que forem
iguais a 'a' por 'b'. O programa deve imprimir o número de
caracteres modificados e a string modificada.
Faça um programa que verifique se uma palavra é simétrica. Por
exemplo: “arara” é uma palavra simétrica. Podemos lê-la
normalmente ou de trás para a frente e sempre obteremos a
mesma palavra.
Exercícios
Receber um nome e imprimir as 4 primeiras letras do nome
Receber um nome e imprimir as letras na posição impar
Ler nome, sexo e idade. Se sexo for feminino e idade menor que 25,
imprimir o nome da pessoa e a palavra ACEITA. Caso contrario
imprimir NAO ACEITA.
Digite um nome , calcule e mostre quantas letras tem
Receber do teclado um nome e imprimir tantas vezes quantos forem
os seus caracteres
Exercícios
Entrar com um nome e imprimir o nome somente se a primeira letra
do nome for “a” (maiúscula ou minúscula).
Solicitar no teclado uma frase com no máximo 40 letras. Se o
tamanho for maior que 40, dar uma mensagem de entrada inválida
e solicitar novamente, se passar, imprimir a frase na vertical com
um tempo em cada letra.
Escrever um programa que receba um nome que conte o número de
vogais existentes nele. O programa deverá imprimir o numero
total de caracteres do nome, quantas vogais e a respetiva
percentagem das vogais em relação ao total de caracteres.
Exercícios
Digitar um nome e solicitar que seja mostrado em maiúsculo na tela.
Solicitar dois nomes e escrevê-los, mostrar a posição de cada letra.
Solicitar um nome e mostrar o primeiro, o último, o quarto, do
primeiro ao terceiro, do primeiro ao ultimo caracter digitado e as
suas posições. Mostrar quantas letras tem o nome e escrevê-lo de
trás para a frente.
Funções
São estruturas que permitem ao programador
separar o código do seu programa em blocos.
Uma função tem a seguinte forma :
return expressão;
} com valor de retorno
Funções
Função simples:
void sai_do_programa()
{
printf(“Digite qualquer tecla para sair do programa.\n”);
system(“pause”);
exit(0);
}
Chamada: sai_do_programa();
Funções
Função com parâmetro:
void imprime_quadrado(int n)
{
printf(“O quadrado de %d é %d.\n”,n, n*n);
}
Chamada: imprime_quadrado(5);
Saída: O quadrado de 5 é 25
Funções
Função com parâmetro e retorno:
int quadrado(int n)
{
int q;
q = n * n;
return(q);
}
Chamada: printf(“O quadrado de %d é %d.\n”, 5, quadrado(5) );
Saída: O quadrado de 5 é 25
Funções
Função com parâmetro e retorno:
int quadrado(int n)
{
int q;
q = n * n;
return(q);
}
Chamada:
int i;
for(i=1;i<5;i++)
printf(“O quadrado de %d eh %d.\n”, 5, quadrado(5) );
Saída: O quadrado de 1 é 1
O quadrado de 2 é 4
O quadrado de 3 é 9
O quadrado de 4 é 16
Funções
Função com diversos parâmetros e retorno:
int potencia(int n, int p)
{
int i,resultado=1;
for(i=1;i<=p;i++)
resultado = resultado * n;
return(resultado);
}
Chamada: printf(“%d elevado a %d vale %d.\n”,2,4,potencia(2,4));
Saída: 2 elevado a 4 vale 16
Funções
Função com diversos parâmetros e retorno:
int potencia(int n, int p)
{
int i,resultado=1;
for(i=1;i<=p;i++)
resultado = resultado * n;
return(resultado);
}
Chamada:
int i;
for(i=1;i<5;i++)
printf(“%d elevado a %d vale %d.\n”,2,i,potencia(2,i));
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
...
srand(time(NULL))
time (NULL) fornece a data e hora do dia corrente, em segundos.
Funções – Enunciado do Exercício
system(“cls”);
Matrizes
Como uma matriz possui dois índices, precisamos de duas estruturas de repetição para percorrer
todos os seus elementos.
Matrizes- Exercício Resolvido
Leia uma matriz de 3x3 elementos inteiros e calcule a soma dos seus elementos
Matrizes- Exercício Resolvido
Dado duas matrizes reais de dimensão 2x3, fazer um programa para calcular a soma delas
Matrizes- Produto de Matrizes
Matrizes
Leia uma matriz 3×2 e outra 2×3 de números inteiros. imprima o produto destas duas
matrizes.
Escreva um algoritmo que leia um numero inteiro A e uma matriz V[2][2] de números. conte
quantos valores iguais a A estão na matriz. Crie, a seguir, uma matriz X contendo todos os
elementos de V diferentes de A. mostre os resultados.
Escreva um algoritmo que lê uma matriz M[4][4] e calcula as somas: da linha 4 de M; da
coluna 2 de M; da diagonal principal; de todos os elementos da matriz M; Escrever as
somas e a matriz.
Matrizes-Exercícios
#include <stdio.h>
#include <stdlib.h>
int main(){
int matA[3][2], matB[2][3], matR[3][3]; //variaveis
int i = 0, j = 0;
for (i=0; i<3; i++) {
for (j=0; j<2; j++) {
printf(“Informe o valor para matriz A[%d][%d]: “, i, j); //solicitacao valor utilizador
scanf(“%d”, &matA[i][j]); //gravar dados}}
printf(“\n”);
for (i=0; i<2; i++) {
for (j=0; j<3; j++) {
printf(“Informe o valor para matriz B[%d][%d]: “, i, j); //solicitacao valor utilizador
scanf(“%d”, &matB[i][j]); } } //gravar dados
for (i=0; i<3; i++) { //percorrer
for (j=0; j<2; j++) { //percorrer
matR[i][j] = matA[i][j] * matB[j][i]; //formula
printf(“%d\t”, matR[i][j]); } }//resultado
return 0;}
Matrizes- Exercícios
#include <stdio.h> //incluíndo bibliotecas
#include <stdlib.h>
int main() { //inicializando main
#define V mat; //declarando variável constante
int a, i, j; //variáveis
int cont=0;
int mat[5][5];
printf(“Informe valor de A: “); //solicitando dado ao usuário
scanf(“%d”, &a); //lendo dado
for (i=0; i<5; i++) { //laço repetição i
for (j=0; j<5; j++) { //laço repetição j
printf(“informe valor de mat[%d][%d]: “, i, j); //solicitando dados ao utilizador
scanf(“%d”, &mat[i][j]); //lendo dados
}
}
for (i=0; i<5; i++) { //percorrendo dados “i” e “j”
for (j=0; j<5; j++) {
if (mat[i][j] == a) { //condição
cont++; //contador
}
}
}
printf(“São iguais a ‘A’: %d”, cont); //apresentando resultado(s)
return 0;
}
Apontadores em C
Definições
void main() {
long a=5;
char ch=‘x’;
}
Definições
void main() {
long a=5;
char ch=‘c’;
long *aPrt = &a;
}
Declaração de Apontadores
void main() {
long a=5;
char ch=‘x’;
long *aPrt = &a;
printf("%d\n",*aPrt);
printf("%p\n",aPrt);
printf("%p\n",&aPrt);
}
#include <stdio.h>
main ()
{
int num,valor;
int *p;
num=55;
p=# /* Usa o endereco de num */
valor=*p; /* Valor é igualado a num de uma maneira indireta */
printf ("%d\n",valor);
printf ("Endereco para onde o ponteiro aponta: %p\n",p);
printf ("Valor da variavel apontada: %d\n",*p);
}
Alguns exemplos... (2)
#include <stdio.h>
main ()
{
int num,*p;
num=55;
p=# /* Usa o endereco de num */
printf ("Valor inicial: %d\n",num);
*p=100; /* Muda o valor de num de uma maneira indireta */
printf ("\nValor final: %d\n",num);
}
Alguns exemplos... (3)
#include <iostream.h>
main ()
{
int num,*p1, *p2;
num=55;
p1=# /* Usa o endereco de num */
p2=p1; /*p2 passa a apontar para o mesmo endereço apontado por p1 */
printf("Conteudo de p1: %p\n", p1);
printf("Valor apontado por p1: %d\n", *p1);
printf("Conteudo de p2: %p\n", p2);
printf("Valor apontado por p2: %d\n", *p2);
}
Operadores para Apontadores
Incremento/Decremento:
Apontar para o próximo valor do
mesmo tipo para o qual o
ponteiro aponta:
long *aPtr, a=5;
aPtr=&a;
aPtr++;
Exercícios com Apontadores
Suponha que a, b e c são variáveis inteiras e veja uma maneira de fazer c = a+b usando apontadores
Escreva os valores das variáveis para cada instrução do programa abaixo. Qual a saída do programa?
int main()
{
int a,b,*p1, *p2;
a = 4;
b = 3;
p1 = &a;
p2 = p1;
*p2 = *p1 + 3;
b = b * (*p1);
(*p2)++;
p1 = &b;
printf("%d %d\n", *p1, *p2);
printf("%d %d\n", a, b);
}
Operadores para Ponteiros
Alguns exemplos... (4)
main ()
{
long num;
long *p;
num=55;
p=#
printf("Conteudo de p: %p\n",p);
printf("Valor apontado por p: %d\n",*p);
printf("Conteúdo de p incrementado: %p\n",++p);
printf("Valor apontado por p incrementado: %d\n",*p);
}
Alguns exemplos... (5)
main ()
{
long num;
long *p;
num=55;
p=#
printf("Conteudo de p: %p\n",p);
printf("Valor apontado por p: %d\n", *p);
printf("Conteúdo de p incrementado: %p\n", ++p);
printf(" Conteúdo de p: %p\n", p);
}
Apontadores e Vetores
Int a[10];
Int *p;
p=a; /* válido. Equivalente a: p= &a[0] */
a=p; /* inválido*/
a++; /* inválido*/
Apontadores e Vetores
main ()
{
int vet[4], i;
int *p;
p=vet;
for (int i=0; i<4; i++)
{
*p=0;
p++;
}
main ()
{
float matrx [4][4];
float *p;
int count;
p=matrx[0];
for (count=0;count<16;count++)
{
*p=0.0;
p++;
}
}
Vetores como ponteiros
Observe o código:
main () /* Errado - Nao Execute */
{
int x,*p;
x=13;
*p=x; //posição de memória de p é indefinida!
}
A não inicialização de ponteiros pode fazer com que ele esteja alocando
um espaço de memória utilizado, por exemplo, pelo S.O.
Vetores de apontadores
#include <stdlib.h>
main() {
int *v, i, n, *p;
scanf(“%d”, &n); // le n
//aloca n elementos para v
v = (int *) malloc(n*sizeof(int));
// inicializa o vetor v com n elementos
for (i = 0; i < n; i++)
v[i] = 0;
p = v;
for (i = 0; i < n; i++) {
printf("%d ",*p);
++p;}
// liberta os n elementos de v
free(v);
}
Exercício
1. Rescreva o código abaixo utilizando notação de
apontadores dentro do ciclo for.
int x[5], i;
for (i= 0; i < 5; i++)
x[i]= i*10;
void main() {
a=5;
char ch=‘x’;
}
Apontadores-Definições
void main() {
long a=5;
char ch=‘x’;
long *aPrt = &a;
printf("%d\n",*aPrt);
printf("%p\n",aPrt);
printf("%p\n",&aPrt);
}
#include <stdio.h>
main ()
{
int num,valor;
int *p;
num=55;
p=# /* Pega o endereco de num */
valor=*p; /* Valor é igualado a num de uma maneira indireta */
printf ("%d\n",valor);
printf ("Endereco para onde o ponteiro aponta: %p\n",p);
printf ("Valor da variavel apontada: %d\n",*p);
}
Alguns exemplos... (2)
#include <stdio.h>
main ()
{
int num,*p;
num=55;
p=# /* Pega o endereco de num */
printf ("Valor inicial: %d\n",num);
*p=100; /* Muda o valor de num de uma maneira indireta */
printf ("\nValor final: %d\n",num);
}
Alguns exemplos... (3)
#include <iostream.h>
main ()
{
int num,*p1, *p2;
num=55;
p1=# /* Pega o endereco de num */
p2=p1; /*p2 passa a apontar para o mesmo endereço apontado por p1 */
printf("Conteudo de p1: %p\n", p1);
printf("Valor apontado por p1: %d\n", *p1);
printf("Conteudo de p2: %p\n", p2);
printf("Valor apontado por p2: %d\n", *p2);
}
Operadores para Ponteiros
Incremento/Decreme
nto:
Apontar para o
próximo valor do
mesmo tipo para o
qual o ponteiro
aponta:
long *aPtr, a=5;
aPtr=&a;
aPtr++;
Operadores para Ponteiros
#include <iostream.h>
main ()
{
long num;
long *p;
num=55;
p=#
printf("Conteudo de p: %p\n",p);
printf("Valor apontado por p: %d\n",*p);
printf("Conteúdo de p incrementado: %p\n",++p);
printf("Valor apontado por p incrementado: %d\n",*p);
}
Alguns exemplos... (5)
#include <iostream.h>
main ()
{
long num;
long *p;
num=55;
p=#
printf("Conteudo de p: %p\n",p);
printf("Valor apontado por p: %d\n", *p);
printf("Conteúdo de p incrementado: %p\n", ++p);
printf(" Conteúdo de p: %p\n", p);
}
Vetores como ponteiros
main ()
{
int vet[4], i;
int *p;
p=vet;
for (int i=0; i<4; i++)
{
*p=0;
p++;
}
main ()
{
float matrx [4][4];
float *p;
int count;
p=matrx[0];
for (count=0;count<16;count++)
{
*p=0.0;
p++;
}
}
Alguns exemplos... (9) - Strings
#include <stdlib.h>
main() {
int *v, i, n, *p;
scanf(“%d”, &n); // le n
//aloca n elementos para v
v = (int *) malloc(n*sizeof(int));
// zera o vetor v com n elementos
for (i = 0; i < n; i++)
v[i] = 0;
p = v;
for (i = 0; i < n; i++) {
printf("%d ",*p);
++p;}
// libera os n elementos de v
free(v);
}
Exercício
1. Rescreva o código abaixo utilizando notação de
apontadores dentro do ciclo for.
int x[5], i;
for (i= 0; i < 5; i++)
x[i]= i*10;