Enriqueça as terceiras 8 horas do dia!
Acontece que a maioria das variáveis que vi antes são variáveis locais definidas na função (ela só aparece ao entrar na função e não existe depois que a função é encerrada)
Variável global
1. Variáveis definidas fora das variáveis globais de função
1> O tempo de vida e o escopo são globais!
2> Todas as funções podem ser usadas e acessadas.
2. Inicialização de variáveis globais:
1> O compilador atribuirá automaticamente um valor de 0 às variáveis globais que não são inicializadas. (A variável local é um valor aleatório!)
2> Um ponteiro global que não foi inicializado obterá um valor NULL.
3> Use apenas valores conhecidos em tempo de compilação para inicializar variáveis globais
#include <stdio.h>
int gall = 1;//定义了一个全局变量gall 值为1
int gall2 = gall;//这句不行!!!是错误的,因为编译时gall算是未知量
int main(void)
{
......
return 0;
}
4> Sua inicialização ocorre antes da função main ()
5> Não use variáveis globais. Existem algumas atribuições, operações, etc. entre elas. Porque podemos ter chamadas de arquivo, pode haver confusão (ordem ou algo assim)
Por exemplo, antes de principal:
const int gall = 12; // Depois de adicionar const aqui, o valor de gall é conhecido em tempo de compilação
galha interna 2 = galha;
não faça isso! ! ! !
2. Se houver uma variável com o mesmo nome da variável global dentro da função, a variável global ficará oculta dentro da função e a variável global reaparecerá após sair da função.
Pode ser entendido assim: Redefinir variáveis que apareceram em lugares maiores em lugares menores irá ocultá-las.
Variáveis locais estáticas
1. Adicionar uma estática antes da variável local se tornará uma variável local estática
2. A variável que deixa a função estática manterá seu valor, e da próxima vez que você entrar na função ainda será o último valor e não será reinicializada (pode-se entender que sua inicialização é única)
3. Variáveis locais estáticas são, na verdade, variáveis globais (você pode personalizar uma variável global, uma variável local estática e uma variável local e, em seguida, produzir seu endereço, você descobrirá que o endereço da variável global é muito próximo do endereço de a variável local estática, mas é semelhante à variável local O endereço é tão ruim)
4. Variáveis locais estáticas têm vida útil global, mas são escopo local.
Pontos a serem observados ao usar variáveis globais
1. Para uma função que retorna um ponteiro
1> Retornar o endereço de uma variável local é perigoso, porque a variável local não existe depois de deixar a função
2> É legal retornar os endereços de variáveis globais e variáveis locais estáticas
2. Não use variáveis globais para passar parâmetros e resultados entre funções! !
3. Tente evitar o uso de variáveis globais
4. Funções que usam variáveis globais e variáveis locais estáticas são thread-inseguras (você não precisa entender por enquanto)
Macro
1. Compile as instruções de pré-processamento:
# ......
1> O sinal # no início é para compilar instruções de pré-processamento
2> As instruções de compilação e processamento não estão disponíveis; ponto-e-vírgula (porque não é um componente da linguagem C, então entenda / dog head, mas a linguagem C não pode passar sem ele, e não é uma palavra-chave da linguagem C que o anexo inclui)
3> #define define a macro (c mais antigo não tem const e usa a definição de macro)
# define PI 3.14159
# define <name> <value> // O valor pode conter espaços, caracteres, etc.
4> Haverá uma etapa de pré-processamento antes da compilação
5> Se a definição da macro exceder uma linha, use \ barra invertida
# define PRINT1 printf("hong");\
printf("hong");//这里的分号是PRINT常量里的!!!
6> As definições de macro podem não ter valor e são frequentemente usadas como compilação condicional
7> Existem algumas macros predefinidas
_FILE_
_LINE_
_DATE_
_TIME_
Macro com parâmetros
1. Macros como funções
#define cube(x) ((x)*(x)*(x))
Desta forma, você pode ter: printf ("% d", cubo (5));
Na verdade, a saída é ((5) * (5) * (5))
2. Deve-se notar que:
Tudo tem parênteses! :
Os parênteses devem ser colocados onde quer que o parâmetro apareça
Todo o valor (fórmula) deve ter parênteses
3. Você pode usar vários parâmetros (lembre-se de colocar parênteses nos parâmetros!)
4. Não adicione ponto e vírgula! ! !