Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRayssa Ector Alterado mais de 10 anos atrás
2
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma função Escopo de arquivo: identificador válido dentro de todos os trechos de uma arquivo fonte Escopo de bloco: identificador válido dentro de todos os trechos de um bloco de comandos “{...}” Exemplos: #include "stdafx.h" #include <iostream> using namespace std; int var_arquivo=0; void funcao(); int main(int argc, char* argv[]){ int var_bloco1=1; printf(“OLá!\n"); return 0; } void funcao(){ int var_funcao=2; return;
3
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma função Escopo de arquivo: identificador válido dentro de todos os trechos de uma arquivo fonte Escopo de bloco: identificador válido dentro de todos os trechos de um bloco de comandos “{...}” Exemplos: #include "stdafx.h" #include <iostream> using namespace std; int var_arquivo=0; var_arquivo var_bloco var_funcao void funcao(); int main(int argc, char* argv[]){ int var_bloco1=1; OK OK printf(“OLá!\n"); return 0; } void funcao(){ int var_funcao=2; OK OK return;
4
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma função Escopo de arquivo: identificador válido dentro de todos os trechos de uma arquivo fonte Escopo de bloco: identificador válido dentro de todos os trechos de um bloco de comandos “{...}” Menor uso de variáveis “globais” Maior portabilidade Maior facilidade de manutenção
5
Modificadores: classes de armazenamento
Classe de armazenamento associada ao intervalo de tempo em que o identificador declarado deve estar disponível separa alocação em memória de dados, em área de pilha e em registradores Algumas classes: auto, register, extern, static Armazenamento automático: auto, register Alocação de variáveis implementado “automaticamente” em área de pilha ou registradores A área da variável não existe (alocada) a não ser na execução do trecho correspondente Armazenamento estático: extern, static Alocação de variáveis implementado em área de memória de dados
6
Modificadores: classes de armazenamento
Armazenamento automático x estático área de dados área de código área de pilha área de dados área de código área de pilha área de dados área de código área de pilha
7
Modificadores: classes de armazenamento
auto Classe default para variáveis de funções Palavra-chave “auto” declara explicitamente variáveis com classe de armazenamento automático Permite economizar memória: as variáveis são criadas em memória (área de pilha) quando o bloco é chamado e o espaço utilizado é liberado ao final da execução do bloco Formato: auto <tipo> <nome> ; auto <tipo> <nome> = <valor>; Exemplos: auto int teste;
8
Modificadores: classes de armazenamento
register Palavra-chave “register” declara explicitamente variáveis com classe de armazenamento automático do tipo register Permite economizar memória e acelerar o processamento: as variáveis são alocadas em registradores da CPU O compilador pode ignorar a declaração se não houverem registradores disponíveis e pode alocar automaticamente variáveis em registradores, para otimização Formato: register <tipo> <nome> ; register <tipo> <nome> = <valor>; Exemplos: register int teste=1;
9
Modificadores: classes de armazenamento
extern Palavra-chave “extern” declara explicitamente variáveis com classe de armazenamento estático, com definição em outro arquivo Utilizada para indicar o uso de variáveis em outros módulos Formato: extern <tipo> <nome> ; ou extern <tipo> <nome> = <valor>; Exemplos: No arquivo 1: No arquivo 2: int teste_externo; extern int teste_externo; ...... teste_externo=1;
10
Modificadores: classes de armazenamento
static Palavra-chave “static” declara explicitamente variáveis com classe de armazenamento estático Utilizadas (visíveis) apenas na função ou bloco definido, mas inicializadas apenas uma vez Mantém o valor ao final da função ou bloco Formato: static <tipo> <nome> ; ou static <tipo> <nome> = <valor>; Exemplo de uso: função a ser chamada diversas vezes com necessidade de manutenção de informações de estado entre as chamadas. Evita o uso de variáveis globais
Apresentações semelhantes
© 2025 SlidePlayer.com.br Inc.
All rights reserved.