Qual é a diferença entre definição, declaração e inicialização em c?

Eu responderei a esta pergunta de maneira geral e completa e não com relação a qualquer linguagem de programação

Há muita confusão entre declaração, definição e inicialização. Às vezes, todos parecem semelhantes e às vezes completamente diferentes.

Antes de entender as diferenças, é muito importante estar ciente de duas coisas:

  • A diferença entre declaração, definição e inicialização varia de uma linguagem de programação para outra. Cada programação tem sua própria maneira de fazer essas três coisas.
  • A "coisa" que você está definindo, declarando ou inicializando também afeta a diferença entre os três. Essa "coisa" pode ser uma variável, uma classe ou uma função. Todos eles têm significados diferentes de definições, declaração e inicialização.

Uma vez que estamos cientes das duas coisas acima, a maioria das dúvidas é esclarecida e paramos de procurar diferenças exatas porque não existe.

Em termos gerais (independentemente de qualquer idioma ou "coisa")

  • A declaração significa que estamos dizendo a um computador que essa "coisa" (pode ser uma variável, uma função ou uma classe) existe, mas não sabemos onde. No futuro, podemos dizer, mas agora ele existe em algum lugar. Em palavras simples, não alocamos memória durante a declaração. Podemos declarar essa "coisa" muitas vezes.
  • A definição significa que estamos dizendo ao computador que essa "coisa" precisa de memória e precisa estar localizada em algum lugar. Em palavras simples, definir significa que alocamos memória para ele. Podemos definir algo apenas uma vez
  • A inicialização significa que, seja qual for a nossa "coisa", estamos atribuindo a ela um valor inicial. Essa "coisa" deve estar em algum local da memória e, se mantivermos esse local vazio, pode ser um local para bugs e erros. A inicialização nem sempre é necessária, mas é importante.

Muitas pessoas assumem que

declaração + definição = Inicialização.

Não está errado, mas não está correto em todos os lugares. É correto apenas para variáveis ​​que também em uma linguagem como C ++ ou talvez C.

Em python, não há conceito da declaração. Não precisamos declarar nada.

O significado geral dos três é válido em todos os lugares, mas a maneira como é realizada varia de idioma para idioma e a "coisa".

Espero que ajude :)

Declaração

de uma variável especifica seu nome e tipo de dados. Declaração não cria uma variável; refere-se apenas a um nome de variável e a que tipo de dados a variável conterá; portanto, a memória não é alocada no momento da declaração.

  1. extern int i; / * Declaração * /

Definição

cria a variável, para que a memória seja alocada no momento da definição.

As declarações também servem como definições, exceto quando a declaração contém o

extern

especificador, mas não

inicializador

.

  1. int i;

Desde a

extern

palavra-chave não é usada na declaração, portanto, a declaração também é definida.

Inicialização

Quando uma variável é declarada, ela contém um valor indefinido, conhecido como valor do lixo. Se quisermos, podemos atribuir algum valor inicial à variável durante a própria declaração, isso é chamado de inicialização da variável.

  1. int i = 10;

Para leitura adicional:

Variáveis ​​C

Declaração: Em palavras simples, pode ser descrito como alocar um nome para a memória

por exemplo :

int i;

// 2 bytes ou 4 bytes (32 bits) de memória (você pode considerá-lo um bloco) é alocado para a variável i

NOTA: 1001, 1002… 1005 são exemplos de endereços de memória e consideram que cada bloco armazena 1 byte de dados

Inicialização: armazenando valor na variável declarada

por exemplo :

i = 10;

a inicialização é feita usando o operador de atribuição (=), para que o valor do lado direito seja atribuído à variável do lado esquerdo

Declaração: definindo a tarefa (Declaração + Inicialização)

int i = 10; // aqui a tarefa é armazenar o valor na variável i