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;"> 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;">

A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1

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


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google