SlideShare uma empresa Scribd logo
Algoritmos e Programação I
Linguagem de Programação C
Ponteiros
Sumário
• Definição de ponteiros
• Porque utilizá-los?
• Declarando uma variável como ponteiro
• Operadores de ponteiros – Operadores
• Operadores de ponteiros: Resumo
• Operadores de ponteiros – Exemplo
• Expressões com ponteiros: Atribuição
• Expressões com ponteiros – Na memória
• Expressões com ponteiros: Aritmética
• Expressões com ponteiros: Aritmética
(continuação):
• Expressões com ponteiros: Comparação
• Expressões com ponteiros: Exemplo
• Ponteiros e Matrizes
• Ponteiros e Matrizes: Exemplo sem ponteiros
• Ponteiros e Matrizes: Exemplo com ponteiros
• Ponteiros e Matrizes: Endereço e conteúdo
• Ponteiros e Matrizes: Ponteiro constante
• Ponteiros e Matrizes: Ponteiro flutuante
• Ponteiros e Matrizes: Ponteiros para matrizes
• Ponteiros e Strings
• Ponteiros e Strings: Exemplo 01
• Ponteiros e strings: Funções de manipulação
• Ponteiros e Strings: Exemplo 02
05/07/2023 Professor Paulo Nunes 2
Definição de ponteiros
• Representação simbólica de um endereço de memória.
• Um ponteiro é um tipo especial de variável que armazena endereços.
• Tipos:
• Constantes: um endereço
• Variáveis: local para armazenar o endereço.
05/07/2023 Professor Paulo Nunes 3
Porque utilizá-los?
• Fornecem maneiras com as quais as funções podem realmente
modificar os argumentos que recebem;
• Permitem a passagem de matrizes e “strings” de forma mais precisa
de uma função para outra;
• Permitem uma melhor manipulação de matrizes;
• Para a criação de estruturas de dados complexas como listas
encadeadas e árvores binárias;
• Compilam mais rapidamente, o que torna o código mais eficiente.
05/07/2023 Professor Paulo Nunes 4
Declarando uma variável como ponteiro
• A declaração dever ser na forma:
tipo *variável;
• Onde:
• tipo: é um tipo de variável válido em C;
• *: identificador de ponteiro;
• variável: nome de variável válido em C.
• Exemplo:
int *a;
• As variáveis ponteiro devem sempre apontar para o tipo de dado
correto.
05/07/2023 Professor Paulo Nunes 5
Operadores de ponteiros - Operadores
• Existem dois operadores unários para manipulação de ponteiros:
• & devolve o endereço de memória de uma variável.
Por exemplo:
a = &endereco;
Armazena em “a” o endereço de memória da variável “endereço”. Diz-se “O
endereço de...”.
• * é o complemento de &, que devolve o valor da variável localizada no endereço
que o segue.
Por exemplo:
q = *a;
Armazena em “q” o conteúdo de “endereço”. Diz-se “No endereço de ...”.
05/07/2023 Professor Paulo Nunes 6
Operadores de ponteiros: Resumo
• Nome do ponteiro: retorno o endereço apontado pelo mesmo.
• &: junto ao nome do ponteiro, retorna o endereço do ponteiro.
• Exemplo: int *p; printf(“%u”,&p);
• *: junto ao nome do ponteiro, retorna o conteúdo da variável apontada pelo
mesmo.
• Exemplo: int x = 2; *p = x; printf(“%d”,*p);
05/07/2023 Professor Paulo Nunes 7
Operadores de ponteiros - Exemplo
05/07/2023 Professor Paulo Nunes 8
Declaração de variável
ponteiro
Variável “a” recebe o
endereço da variável
“endereço”.
Variável “q” recebe o
conteúdo da variável
“endereco”.
Expressões com ponteiros: Atribuição
05/07/2023 Professor Paulo Nunes 9
“q” aponta para
o endereço de
“x”.
“p” recebe o
conteúdo de
“q”.
será impresso o endereço de
“x”, pois ambos, “p” e “q”
apontam para ele.
Expressões com ponteiros – Na memória
Variável Conteúdo Aponta Endereço
x 5 2686732
y 10 2686728
p 2686732 5 2686724
q 2686728 10 2686720
05/07/2023 Professor Paulo Nunes 10
Expressões com ponteiros: Aritmética
• Duas operações apenas: Adição e Subtração.
• São incrementados e decrementados de acordo com o tipo base.
05/07/2023 Professor Paulo Nunes 11
Expressões com ponteiros: Aritmética
(continuação):
• A cada incremento, o ponteiro aponta para a próxima posição de memória do
elemento de seu mesmo tipo, ocorrendo o mesmo no decremento.
• Tipos float e double não podem ser adicionados ou subtraídos a ponteiros.
05/07/2023 Professor Paulo Nunes 12
Expressões com ponteiros: Comparação
• Utilizam-se os operadores (=, !=, >=, <=, > e <) para comparações entre
ponteiros.
• Os operandos devem ambos ser do tipo ponteiro.
• As variáveis apontadas pelos ponteiros devem ser do mesmo tipo.
05/07/2023 Professor Paulo Nunes 13
Expressões com ponteiros: Exemplo
05/07/2023 Professor Paulo Nunes 14
Ponteiros e Matrizes
• Matrizes, após a compilação, são transformadas em ponteiros.
• Operações com índices de matrizes podem ser feitas com ponteiros.
• O nome de uma matriz é um endereço, portanto um ponteiro.
• Acessam a memória de maneira idêntica.
05/07/2023 Professor Paulo Nunes 15
Ponteiros e Matrizes: Exemplo sem
ponteiros
05/07/2023 Professor Paulo Nunes 16
Ponteiros e Matrizes: Exemplo com
ponteiros
05/07/2023 Professor Paulo Nunes 17
Ponteiros e Matrizes: Endereço e conteúdo
• O que significa a expressão *(nums + d) na matriz com ponteiros?
• A expressão acessa o endereço do elemento de índice d da matriz
nums.
• *(matriz + índice)  matriz[linha]
• Um endereço de um elemento de uma matriz pode ser referenciado
das seguintes formas:
• nums + d ou &nums[d].
• Exemplo:
05/07/2023 Professor Paulo Nunes 18
Ponteiros e Matrizes: Ponteiro constante
05/07/2023 Professor Paulo Nunes 19
“notas” é o endereço
da matriz “notas[]”,
não podendo ser
variado.
Diretiva de pré-
processador. Define
um valor como
constante.
Ponteiros e Matrizes: Ponteiro flutuante
05/07/2023 Professor Paulo Nunes 20
Aponta para uma matriz do
tipo float, incrementando 4
bytes a cada operação.
Ponteiros e Matrizes: Ponteiros para
matrizes
05/07/2023 Professor Paulo Nunes 21
Função que adiciona um
valor aos elementos da
matriz.
Chamada da função
passando o endereço da
matriz como argumento.
Cria um ponteiro
variável
Ponteiros e Strings
• Matriz unidimensional de caracteres que termina em nulo ‘0’.
• Constantes string são uma lista de caracteres entre aspas.
• Exemplo: “Escreva aqui”
• O caractere nulo é adicionado ao final da string automaticamente
pelo compilador.
• Para funções de manipulação de string, utiliza-se a biblioteca
STRING.H.
05/07/2023 Professor Paulo Nunes 22
Ponteiros e Strings: Exemplo 01
05/07/2023 Professor Paulo Nunes 23
Quando a função não for inteira,
deve ser declarada em main().
Retorna o ponteiro informando a
posição do caractere na frase.
Ponteiros e strings: Funções de
manipulação
• Estas são algumas das funções para manipulação de strings em C:
• strcpy(string1,string2) : copia string2 em string1.
• strcat(string1,string2): concatena string2 no final de string1.
• strlen(string): retorna o tamanho de string.
• strcmp(string1,string2): retorna 0 se string1 e string2 iguais, < 0 se string1 <
string2 e > 0 se string1 > string2.
• strchr(string,ch): retorna um ponteiro para a primeira ocorrência de ch em
string.
• strstr(string1,string2): retorna um ponteiro para a primeira ocorrência de
string2 em string1.
05/07/2023 Professor Paulo Nunes 24
Ponteiros e Strings: Exemplo 02
05/07/2023 Professor Paulo Nunes 25
Retorna o
tamanho de str1.
Retorna o
tamanho de str2.
Verifica se as
strings são iguais.
Concatena str2
ao final de str1.
Copia str2 em
str1.
Aponta para a primeira
ocorrência de ‘O’ em “Ola”.
Aponta para a primeira ocorrência
de ‘Ola’ em “Ola aqui”.
O professor
05/07/2023 Professor Paulo Nunes 26
Referências bibliográficas
• Kerninghan, Brian W. The C Programming Language. Second Ed.
Includes index. (C Computer Program Language). I. Ritchie, Dennis M.
Prentice Hall, 1978.
• Mizrahi, Victorine Viviane. Treinamento em Linguagem C – Módulo 2.
McGraw-Hill, Ltda. 1990.
• Schildt, Herbert. C: The complete reference. 3ª Ed. Pearson, 1997.
05/07/2023 Professor Paulo Nunes 27

Mais conteúdo relacionado

Semelhante a Utilizando ponteiros em C.

Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação Dinâmica
Eduardo Oliveira
 
1601PAPSUML-Cap12-destaqueDAO.ppt
1601PAPSUML-Cap12-destaqueDAO.ppt1601PAPSUML-Cap12-destaqueDAO.ppt
1601PAPSUML-Cap12-destaqueDAO.ppt
Alan5263
 
Aula de programacao_final.dizando
Aula de programacao_final.dizandoAula de programacao_final.dizando
Aula de programacao_final.dizando
João Gomes
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Adriano Teixeira de Souza
 
Tecnicas programacao i_c_p4
Tecnicas programacao i_c_p4Tecnicas programacao i_c_p4
Tecnicas programacao i_c_p4
D M
 

Semelhante a Utilizando ponteiros em C. (20)

Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação Dinâmica
 
Ed1
Ed1Ed1
Ed1
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Unidade06
Unidade06Unidade06
Unidade06
 
Aula04 ponteiros e conversao
Aula04   ponteiros e conversaoAula04   ponteiros e conversao
Aula04 ponteiros e conversao
 
Python introdução a linguagem de programação
Python introdução a linguagem de programaçãoPython introdução a linguagem de programação
Python introdução a linguagem de programação
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoes
 
Introdução a Python
Introdução a PythonIntrodução a Python
Introdução a Python
 
document.onl_manual-psi-m5.pdf
document.onl_manual-psi-m5.pdfdocument.onl_manual-psi-m5.pdf
document.onl_manual-psi-m5.pdf
 
PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
 
Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: Introdução
 
PHP
PHPPHP
PHP
 
1601PAPSUML-Cap12-destaqueDAO.ppt
1601PAPSUML-Cap12-destaqueDAO.ppt1601PAPSUML-Cap12-destaqueDAO.ppt
1601PAPSUML-Cap12-destaqueDAO.ppt
 
Aula de programacao_final.dizando
Aula de programacao_final.dizandoAula de programacao_final.dizando
Aula de programacao_final.dizando
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
Oz
OzOz
Oz
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 
Pged 01
Pged 01Pged 01
Pged 01
 
Tecnicas programacao i_c_p4
Tecnicas programacao i_c_p4Tecnicas programacao i_c_p4
Tecnicas programacao i_c_p4
 
05 classes utilitarias
05   classes utilitarias05   classes utilitarias
05 classes utilitarias
 

Mais de SchoolByte

Mais de SchoolByte (11)

Estruturas de Dados: Listas, fundamentos.
Estruturas de Dados: Listas, fundamentos.Estruturas de Dados: Listas, fundamentos.
Estruturas de Dados: Listas, fundamentos.
 
Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.
 
Laços de repetição em C.
Laços de repetição em C.Laços de repetição em C.
Laços de repetição em C.
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação C
 
Estruturas de repetição e controle de fluxo: conceitos
Estruturas de repetição e controle de fluxo: conceitosEstruturas de repetição e controle de fluxo: conceitos
Estruturas de repetição e controle de fluxo: conceitos
 
Utilizando estruturas em linguagem C: structs.
Utilizando estruturas em linguagem C: structs.Utilizando estruturas em linguagem C: structs.
Utilizando estruturas em linguagem C: structs.
 
Vetores e Matrizes em C.
Vetores e Matrizes em C.Vetores e Matrizes em C.
Vetores e Matrizes em C.
 
Variáveis: conceitos e funcionamento.
Variáveis: conceitos e funcionamento.Variáveis: conceitos e funcionamento.
Variáveis: conceitos e funcionamento.
 
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em C
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em CComandos de Controle de Fluxo: IF, SWITCH e Ternário em C
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em C
 
Tutorial Visual do Open-Sankoré
Tutorial Visual do Open-SankoréTutorial Visual do Open-Sankoré
Tutorial Visual do Open-Sankoré
 
Tutorial Visual do Dropbox
Tutorial Visual do DropboxTutorial Visual do Dropbox
Tutorial Visual do Dropbox
 

Último

Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdfHans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
rarakey779
 
PERFIL M DO LUBANGO e da Administraçao_041137.pptx
PERFIL M DO LUBANGO e da Administraçao_041137.pptxPERFIL M DO LUBANGO e da Administraçao_041137.pptx
PERFIL M DO LUBANGO e da Administraçao_041137.pptx
tchingando6
 
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdfmanual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
rarakey779
 
OFICINA - CAFETERIA DAS HABILIDADES.pdf_20240516_002101_0000.pdf
OFICINA - CAFETERIA DAS HABILIDADES.pdf_20240516_002101_0000.pdfOFICINA - CAFETERIA DAS HABILIDADES.pdf_20240516_002101_0000.pdf
OFICINA - CAFETERIA DAS HABILIDADES.pdf_20240516_002101_0000.pdf
AndriaNascimento27
 
AS COLUNAS B E J E SUAS POSICOES CONFORME O RITO.pdf
AS COLUNAS B E J E SUAS POSICOES CONFORME O RITO.pdfAS COLUNAS B E J E SUAS POSICOES CONFORME O RITO.pdf
AS COLUNAS B E J E SUAS POSICOES CONFORME O RITO.pdf
ssuserbb4ac2
 
Obra - Curso de Direito Tributário - Doutrina Direito
Obra - Curso de Direito Tributário - Doutrina DireitoObra - Curso de Direito Tributário - Doutrina Direito
Obra - Curso de Direito Tributário - Doutrina Direito
rarakey779
 
GRAMÁTICA NORMATIVA DA LÍNGUA PORTUGUESA UM GUIA COMPLETO DO IDIOMA.pdf
GRAMÁTICA NORMATIVA DA LÍNGUA PORTUGUESA UM GUIA COMPLETO DO IDIOMA.pdfGRAMÁTICA NORMATIVA DA LÍNGUA PORTUGUESA UM GUIA COMPLETO DO IDIOMA.pdf
GRAMÁTICA NORMATIVA DA LÍNGUA PORTUGUESA UM GUIA COMPLETO DO IDIOMA.pdf
rarakey779
 

Último (20)

Apresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao AssédioApresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao Assédio
 
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdfHans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
 
PERFIL M DO LUBANGO e da Administraçao_041137.pptx
PERFIL M DO LUBANGO e da Administraçao_041137.pptxPERFIL M DO LUBANGO e da Administraçao_041137.pptx
PERFIL M DO LUBANGO e da Administraçao_041137.pptx
 
DESAFIO FILOSÓFICO - 1ª SÉRIE - SESI 2020.pptx
DESAFIO FILOSÓFICO - 1ª SÉRIE - SESI 2020.pptxDESAFIO FILOSÓFICO - 1ª SÉRIE - SESI 2020.pptx
DESAFIO FILOSÓFICO - 1ª SÉRIE - SESI 2020.pptx
 
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdfmanual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
 
Recurso da Casa das Ciências: Bateria/Acumulador
Recurso da Casa das Ciências: Bateria/AcumuladorRecurso da Casa das Ciências: Bateria/Acumulador
Recurso da Casa das Ciências: Bateria/Acumulador
 
Os Padres de Assaré - CE. Prof. Francisco Leite
Os Padres de Assaré - CE. Prof. Francisco LeiteOs Padres de Assaré - CE. Prof. Francisco Leite
Os Padres de Assaré - CE. Prof. Francisco Leite
 
OFICINA - CAFETERIA DAS HABILIDADES.pdf_20240516_002101_0000.pdf
OFICINA - CAFETERIA DAS HABILIDADES.pdf_20240516_002101_0000.pdfOFICINA - CAFETERIA DAS HABILIDADES.pdf_20240516_002101_0000.pdf
OFICINA - CAFETERIA DAS HABILIDADES.pdf_20240516_002101_0000.pdf
 
AS COLUNAS B E J E SUAS POSICOES CONFORME O RITO.pdf
AS COLUNAS B E J E SUAS POSICOES CONFORME O RITO.pdfAS COLUNAS B E J E SUAS POSICOES CONFORME O RITO.pdf
AS COLUNAS B E J E SUAS POSICOES CONFORME O RITO.pdf
 
Desastres ambientais e vulnerabilidadess
Desastres ambientais e vulnerabilidadessDesastres ambientais e vulnerabilidadess
Desastres ambientais e vulnerabilidadess
 
Poema - Reciclar é preciso
Poema            -        Reciclar é precisoPoema            -        Reciclar é preciso
Poema - Reciclar é preciso
 
Atividades-Sobre-o-Conto-Venha-Ver-o-Por-Do-Sol.docx
Atividades-Sobre-o-Conto-Venha-Ver-o-Por-Do-Sol.docxAtividades-Sobre-o-Conto-Venha-Ver-o-Por-Do-Sol.docx
Atividades-Sobre-o-Conto-Venha-Ver-o-Por-Do-Sol.docx
 
Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)
 
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdfHans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
 
América Latina: Da Independência à Consolidação dos Estados Nacionais
América Latina: Da Independência à Consolidação dos Estados NacionaisAmérica Latina: Da Independência à Consolidação dos Estados Nacionais
América Latina: Da Independência à Consolidação dos Estados Nacionais
 
ATPCG 27.05 - Recomposição de aprendizagem.pptx
ATPCG 27.05 - Recomposição de aprendizagem.pptxATPCG 27.05 - Recomposição de aprendizagem.pptx
ATPCG 27.05 - Recomposição de aprendizagem.pptx
 
Fotossíntese para o Ensino médio primeiros anos
Fotossíntese para o Ensino médio primeiros anosFotossíntese para o Ensino médio primeiros anos
Fotossíntese para o Ensino médio primeiros anos
 
Exercícios de Clima no brasil e no mundo.pdf
Exercícios de Clima no brasil e no mundo.pdfExercícios de Clima no brasil e no mundo.pdf
Exercícios de Clima no brasil e no mundo.pdf
 
Obra - Curso de Direito Tributário - Doutrina Direito
Obra - Curso de Direito Tributário - Doutrina DireitoObra - Curso de Direito Tributário - Doutrina Direito
Obra - Curso de Direito Tributário - Doutrina Direito
 
GRAMÁTICA NORMATIVA DA LÍNGUA PORTUGUESA UM GUIA COMPLETO DO IDIOMA.pdf
GRAMÁTICA NORMATIVA DA LÍNGUA PORTUGUESA UM GUIA COMPLETO DO IDIOMA.pdfGRAMÁTICA NORMATIVA DA LÍNGUA PORTUGUESA UM GUIA COMPLETO DO IDIOMA.pdf
GRAMÁTICA NORMATIVA DA LÍNGUA PORTUGUESA UM GUIA COMPLETO DO IDIOMA.pdf
 

Utilizando ponteiros em C.

  • 1. Algoritmos e Programação I Linguagem de Programação C Ponteiros
  • 2. Sumário • Definição de ponteiros • Porque utilizá-los? • Declarando uma variável como ponteiro • Operadores de ponteiros – Operadores • Operadores de ponteiros: Resumo • Operadores de ponteiros – Exemplo • Expressões com ponteiros: Atribuição • Expressões com ponteiros – Na memória • Expressões com ponteiros: Aritmética • Expressões com ponteiros: Aritmética (continuação): • Expressões com ponteiros: Comparação • Expressões com ponteiros: Exemplo • Ponteiros e Matrizes • Ponteiros e Matrizes: Exemplo sem ponteiros • Ponteiros e Matrizes: Exemplo com ponteiros • Ponteiros e Matrizes: Endereço e conteúdo • Ponteiros e Matrizes: Ponteiro constante • Ponteiros e Matrizes: Ponteiro flutuante • Ponteiros e Matrizes: Ponteiros para matrizes • Ponteiros e Strings • Ponteiros e Strings: Exemplo 01 • Ponteiros e strings: Funções de manipulação • Ponteiros e Strings: Exemplo 02 05/07/2023 Professor Paulo Nunes 2
  • 3. Definição de ponteiros • Representação simbólica de um endereço de memória. • Um ponteiro é um tipo especial de variável que armazena endereços. • Tipos: • Constantes: um endereço • Variáveis: local para armazenar o endereço. 05/07/2023 Professor Paulo Nunes 3
  • 4. Porque utilizá-los? • Fornecem maneiras com as quais as funções podem realmente modificar os argumentos que recebem; • Permitem a passagem de matrizes e “strings” de forma mais precisa de uma função para outra; • Permitem uma melhor manipulação de matrizes; • Para a criação de estruturas de dados complexas como listas encadeadas e árvores binárias; • Compilam mais rapidamente, o que torna o código mais eficiente. 05/07/2023 Professor Paulo Nunes 4
  • 5. Declarando uma variável como ponteiro • A declaração dever ser na forma: tipo *variável; • Onde: • tipo: é um tipo de variável válido em C; • *: identificador de ponteiro; • variável: nome de variável válido em C. • Exemplo: int *a; • As variáveis ponteiro devem sempre apontar para o tipo de dado correto. 05/07/2023 Professor Paulo Nunes 5
  • 6. Operadores de ponteiros - Operadores • Existem dois operadores unários para manipulação de ponteiros: • & devolve o endereço de memória de uma variável. Por exemplo: a = &endereco; Armazena em “a” o endereço de memória da variável “endereço”. Diz-se “O endereço de...”. • * é o complemento de &, que devolve o valor da variável localizada no endereço que o segue. Por exemplo: q = *a; Armazena em “q” o conteúdo de “endereço”. Diz-se “No endereço de ...”. 05/07/2023 Professor Paulo Nunes 6
  • 7. Operadores de ponteiros: Resumo • Nome do ponteiro: retorno o endereço apontado pelo mesmo. • &: junto ao nome do ponteiro, retorna o endereço do ponteiro. • Exemplo: int *p; printf(“%u”,&p); • *: junto ao nome do ponteiro, retorna o conteúdo da variável apontada pelo mesmo. • Exemplo: int x = 2; *p = x; printf(“%d”,*p); 05/07/2023 Professor Paulo Nunes 7
  • 8. Operadores de ponteiros - Exemplo 05/07/2023 Professor Paulo Nunes 8 Declaração de variável ponteiro Variável “a” recebe o endereço da variável “endereço”. Variável “q” recebe o conteúdo da variável “endereco”.
  • 9. Expressões com ponteiros: Atribuição 05/07/2023 Professor Paulo Nunes 9 “q” aponta para o endereço de “x”. “p” recebe o conteúdo de “q”. será impresso o endereço de “x”, pois ambos, “p” e “q” apontam para ele.
  • 10. Expressões com ponteiros – Na memória Variável Conteúdo Aponta Endereço x 5 2686732 y 10 2686728 p 2686732 5 2686724 q 2686728 10 2686720 05/07/2023 Professor Paulo Nunes 10
  • 11. Expressões com ponteiros: Aritmética • Duas operações apenas: Adição e Subtração. • São incrementados e decrementados de acordo com o tipo base. 05/07/2023 Professor Paulo Nunes 11
  • 12. Expressões com ponteiros: Aritmética (continuação): • A cada incremento, o ponteiro aponta para a próxima posição de memória do elemento de seu mesmo tipo, ocorrendo o mesmo no decremento. • Tipos float e double não podem ser adicionados ou subtraídos a ponteiros. 05/07/2023 Professor Paulo Nunes 12
  • 13. Expressões com ponteiros: Comparação • Utilizam-se os operadores (=, !=, >=, <=, > e <) para comparações entre ponteiros. • Os operandos devem ambos ser do tipo ponteiro. • As variáveis apontadas pelos ponteiros devem ser do mesmo tipo. 05/07/2023 Professor Paulo Nunes 13
  • 14. Expressões com ponteiros: Exemplo 05/07/2023 Professor Paulo Nunes 14
  • 15. Ponteiros e Matrizes • Matrizes, após a compilação, são transformadas em ponteiros. • Operações com índices de matrizes podem ser feitas com ponteiros. • O nome de uma matriz é um endereço, portanto um ponteiro. • Acessam a memória de maneira idêntica. 05/07/2023 Professor Paulo Nunes 15
  • 16. Ponteiros e Matrizes: Exemplo sem ponteiros 05/07/2023 Professor Paulo Nunes 16
  • 17. Ponteiros e Matrizes: Exemplo com ponteiros 05/07/2023 Professor Paulo Nunes 17
  • 18. Ponteiros e Matrizes: Endereço e conteúdo • O que significa a expressão *(nums + d) na matriz com ponteiros? • A expressão acessa o endereço do elemento de índice d da matriz nums. • *(matriz + índice)  matriz[linha] • Um endereço de um elemento de uma matriz pode ser referenciado das seguintes formas: • nums + d ou &nums[d]. • Exemplo: 05/07/2023 Professor Paulo Nunes 18
  • 19. Ponteiros e Matrizes: Ponteiro constante 05/07/2023 Professor Paulo Nunes 19 “notas” é o endereço da matriz “notas[]”, não podendo ser variado. Diretiva de pré- processador. Define um valor como constante.
  • 20. Ponteiros e Matrizes: Ponteiro flutuante 05/07/2023 Professor Paulo Nunes 20 Aponta para uma matriz do tipo float, incrementando 4 bytes a cada operação.
  • 21. Ponteiros e Matrizes: Ponteiros para matrizes 05/07/2023 Professor Paulo Nunes 21 Função que adiciona um valor aos elementos da matriz. Chamada da função passando o endereço da matriz como argumento. Cria um ponteiro variável
  • 22. Ponteiros e Strings • Matriz unidimensional de caracteres que termina em nulo ‘0’. • Constantes string são uma lista de caracteres entre aspas. • Exemplo: “Escreva aqui” • O caractere nulo é adicionado ao final da string automaticamente pelo compilador. • Para funções de manipulação de string, utiliza-se a biblioteca STRING.H. 05/07/2023 Professor Paulo Nunes 22
  • 23. Ponteiros e Strings: Exemplo 01 05/07/2023 Professor Paulo Nunes 23 Quando a função não for inteira, deve ser declarada em main(). Retorna o ponteiro informando a posição do caractere na frase.
  • 24. Ponteiros e strings: Funções de manipulação • Estas são algumas das funções para manipulação de strings em C: • strcpy(string1,string2) : copia string2 em string1. • strcat(string1,string2): concatena string2 no final de string1. • strlen(string): retorna o tamanho de string. • strcmp(string1,string2): retorna 0 se string1 e string2 iguais, < 0 se string1 < string2 e > 0 se string1 > string2. • strchr(string,ch): retorna um ponteiro para a primeira ocorrência de ch em string. • strstr(string1,string2): retorna um ponteiro para a primeira ocorrência de string2 em string1. 05/07/2023 Professor Paulo Nunes 24
  • 25. Ponteiros e Strings: Exemplo 02 05/07/2023 Professor Paulo Nunes 25 Retorna o tamanho de str1. Retorna o tamanho de str2. Verifica se as strings são iguais. Concatena str2 ao final de str1. Copia str2 em str1. Aponta para a primeira ocorrência de ‘O’ em “Ola”. Aponta para a primeira ocorrência de ‘Ola’ em “Ola aqui”.
  • 27. Referências bibliográficas • Kerninghan, Brian W. The C Programming Language. Second Ed. Includes index. (C Computer Program Language). I. Ritchie, Dennis M. Prentice Hall, 1978. • Mizrahi, Victorine Viviane. Treinamento em Linguagem C – Módulo 2. McGraw-Hill, Ltda. 1990. • Schildt, Herbert. C: The complete reference. 3ª Ed. Pearson, 1997. 05/07/2023 Professor Paulo Nunes 27