2 Funções
Passagem de valores por referência
Arrays e funções
3 Ponteiros
Aritmética de Ponteiros
Ponteiro para ponteiro
Ponteiro para função
Próximo Tópico
2 Funções
Passagem de valores por referência
Arrays e funções
3 Ponteiros
Aritmética de Ponteiros
Ponteiro para ponteiro
Ponteiro para função
O que é?
Conjunto de variáveis de um mesmo tipo agrupado sequencialmente
na memória e acessado por um índice.
O que é?
Conjunto de variáveis de um mesmo tipo agrupado sequencialmente
na memória e acessado por um índice.
O que é?
Conjunto de variáveis de um mesmo tipo agrupado sequencialmente
na memória e acessado por um índice.
O que é?
Conjunto de variáveis de um mesmo tipo agrupado sequencialmente
na memória e acessado por um índice.
tipo nome[tamanho];
#include <stdio.h>
int main(){
int notas[100];
int i;
for (i=0; i<100; i++){
printf("Digite a nota do aluno %d: ",i);
scanf("%d",¬as[i]);
}
return 0;
}
Cuidado!
É função do programador garantir que os limites do array estejam
sendo respeitados.
Cuidado!
É função do programador garantir que os limites do array estejam
sendo respeitados.
Cuidado!
Não se pode fazer atribuição de arrays inteiros, apenas de suas posições
individualmente!
Cuidado!
É função do programador garantir que os limites do array estejam
sendo respeitados.
Cuidado!
Não se pode fazer atribuição de arrays inteiros, apenas de suas posições
individualmente!
Boa prática
Para atribuir o conteúdo de um array a outro array, o correto é copiar
seus valores elemento por elemento para o outro array.
2 Funções
Passagem de valores por referência
Arrays e funções
3 Ponteiros
Aritmética de Ponteiros
Ponteiro para ponteiro
Ponteiro para função
Há casos em que uma estrutura com mais de uma dimensão é mais útil.
Há casos em que uma estrutura com mais de uma dimensão é mais útil.
Há casos em que uma estrutura com mais de uma dimensão é mais útil.
Há casos em que uma estrutura com mais de uma dimensão é mais útil.
tipo nome[linhas][colunas];
#include <stdio.h>
int main(){
int mat[100][50];
int i,j;
for (i = 0; i < 100; i++){
for (j = 0; j < 50; j++){
printf("Digite mat[%d][%d]: ",i,j);
scanf("%d",&mat[i][j]);
}
}
return 0;
}
O que é?
Sequência de comandos que recebe um nome e pode ser chamada de
qualquer parte do programa, quantas vezes forem necessárias, durante
a sua execução.
O que é?
Sequência de comandos que recebe um nome e pode ser chamada de
qualquer parte do programa, quantas vezes forem necessárias, durante
a sua execução.
O que é?
Sequência de comandos que recebe um nome e pode ser chamada de
qualquer parte do programa, quantas vezes forem necessárias, durante
a sua execução.
#include <stdio.h>
int Square (int a){
return (a*a);
}
int main(){
int n1,n2;
printf("Entre com um numero: ");
scanf("%d", &n1);
n2 = Square(n1);
printf("O seu quadrado vale: %d\n", n2);
return 0;
}
#include <stdio.h>
//protótipo da função
int Square (int a);
int main(){
int n1,n2;
printf("Entre com um numero: ");
scanf("%d", &n1);
n2 = Square(n1);
printf("O seu quadrado vale: %d\n", n2);
return 0;
}
int Square (int a){
return (a*a);
}
Cuidado!
int x, y é errado! 7
int x, int y é correto! 3
Cuidado!
int x, y é errado! 7
int x, int y é correto! 3
Cuidado!
O valor retornado por uma função não pode ser um array, a linguagem
C não suporta a atribuição de um array para outro.
Cuidado!
int x, y é errado! 7
int x, int y é correto! 3
Cuidado!
O valor retornado por uma função não pode ser um array, a linguagem
C não suporta a atribuição de um array para outro.
Boa prática
Uma função é construída com o intuito de realizar uma tarefa
específica e bem definida.
2 Funções
Passagem de valores por referência
Arrays e funções
3 Ponteiros
Aritmética de Ponteiros
Ponteiro para ponteiro
Ponteiro para função
2 Funções
Passagem de valores por referência
Arrays e funções
3 Ponteiros
Aritmética de Ponteiros
Ponteiro para ponteiro
Ponteiro para função
O que é?
Ponteiros são um tipo especial de variáveis que permitem armazenar
endereços de memória em vez de dados numéricos ou caracteres.
O que é?
Ponteiros são um tipo especial de variáveis que permitem armazenar
endereços de memória em vez de dados numéricos ou caracteres.
O que é?
Ponteiros são um tipo especial de variáveis que permitem armazenar
endereços de memória em vez de dados numéricos ou caracteres.
tipoDoPonteiro *nomeDoPonteiro
tipoDoPonteiro *nomeDoPonteiro
tipoDoPonteiro *nomeDoPonteiro
#include <stdio.h>
int main(){
//Declara uma variável int contendo o valor 10
int count = 10;
//Declara um ponteiro para int
int *p;
//Atribui ao ponteiro o endereço da variável int
p = &count;
printf("Conteudo apontado por p: %d \n",*p);
//Atribui um novo valor à posição de memória
,→ apontada por p
*p = 12;
printf("Conteudo apontado por p: %d \n",*p);
printf("Conteudo de count: %d \n",count);
return 0;
}
Cuidado!
Em geral um ponteiro só pode receber o endereço de memória de uma
variável do mesmo tipo do ponteiro. Porém, o compilador não
acusará nenhum erro!
Cuidado!
Em geral um ponteiro só pode receber o endereço de memória de uma
variável do mesmo tipo do ponteiro. Porém, o compilador não
acusará nenhum erro!
Boa prática
Ponteiros genéricos, do tipo void, devem ser sempre usados com
typecast.
Cuidado!
Em geral um ponteiro só pode receber o endereço de memória de uma
variável do mesmo tipo do ponteiro. Porém, o compilador não
acusará nenhum erro!
Boa prática
Ponteiros genéricos, do tipo void, devem ser sempre usados com
typecast.
Cuidado!
Evite apontar para um tipo de dado diferente do tipo declarado para o
ponteiro, evitando assim erros na interpretação do conteúdo da variável
apontada.
2 Funções
Passagem de valores por referência
Arrays e funções
3 Ponteiros
Aritmética de Ponteiros
Ponteiro para ponteiro
Ponteiro para função
#include <stdio.h>
int main(){
int *p = 0x5DC;
printf("p = Hexadecimal: %p Decimal: %d \n",p,p);
//Incrementa p em uma posição
p++;
printf("p = Hexadecimal: %p Decimal: %d \n",p,p);
//Incrementa p em 15 posições
p = p + 15;
printf("p = Hexadecimal: %p Decimal: %d \n",p,p);
//Decrementa p em 2 posições
p = p - 2;
printf("p = Hexadecimal: %p Decimal: %d \n",p,p);
return 0;
}
2 Funções
Passagem de valores por referência
Arrays e funções
3 Ponteiros
Aritmética de Ponteiros
Ponteiro para ponteiro
Ponteiro para função
O que é?
Ponteiros também ocupam um espaço na memória do computador e
possuem o endereço desse espaço de memória associado ao seu nome.
É possível criar um ponteiro que aponte para o endereço de outro
ponteiro.
O que é?
Ponteiros também ocupam um espaço na memória do computador e
possuem o endereço desse espaço de memória associado ao seu nome.
É possível criar um ponteiro que aponte para o endereço de outro
ponteiro.
Forma geral:
tipoDoPonteiro **nomeDoPonteiro;
#include <stdio.h>
int main(){
int x = 10;
int *p = &x;
int **p2 = &p;
//Endereço em p2
printf("Endereco em p2: %p\n",p2);
//Conteudo do endereço
printf("Conteudo em *p2: %p\n",*p2);
//Conteudo do endereço do endereço
printf("Conteudo em **p2: %d\n",**p2);
return 0;
}
2 Funções
Passagem de valores por referência
Arrays e funções
3 Ponteiros
Aritmética de Ponteiros
Ponteiro para ponteiro
Ponteiro para função
Boa prática
construção de códigos genéricos.
Boa prática
construção de códigos genéricos.
Boa prática
construção de códigos genéricos.
Boa prática
construção de códigos genéricos.
#include <stdio.h>
int soma(int a, int b){return a + b;}
int subtracao(int a, int b){return a - b;}
int produto(int a, int b){return a * b;}
int divisao(int a, int b){return a / b;}