Inicializar strings em C

0

Pergunta

Eu comecei a aprender C e apenas aprendi que as cadeias são apenas matrizes de caracteres. Eu queria ver os valores são em cordas a cada momento para que eu defina um ponto de interrupção em vscode, pisou com a execução, e olhou para todos os valores.

int main()
{
    char a[4] = "foo";
    char b[4] = "bar";

    return 0;
}

Eu vi que antes de inicializar o a[] matriz, já existem valores na memória. screenshot of vscode while debugging.

A minha pergunta é, o que são esses valores? Por que eles estão lá? O que eles representam?

c
2021-11-24 06:29:21
4

Melhor resposta

1

Ao definir um valor, que leva uma parte da memória que pode ter contido os outros números. É basicamente aqueles números que está sendo mostrado em seu guia debug.

2021-11-24 14:32:02
0

Quando você declara uma matriz ou variável, é atribuída memória e essa memória pode conter algum lixo valores já, para que ele imprime como esta forma

O valor do lixo pode ser qualquer coisa, o idioma padrão não especifica o que deve ser

2021-11-24 12:55:09
0

A memória é a memória, ele pode ser inicializado (aka cheio de lixo) ou pode ser inicializado com dados.

No seu caso, quando o programa entrou para o seu principal função de uma pilha foi criada para ele que iria conter suas variáveis locais (sua variável local a ser a matriz char declarado, basicamente, um ponteiro para algum lugar na memória). Antes de inicializado disse ponteiros a e b a ponto de sua cadeia de caracteres, que pode conter qualquer idade e números de modo a tentar ler a "cadeia de caracteres", no endereço que daria mais de lixo aleatório.

Por exemplo, se você escreveu int a = 5; em seu programa e concluído, você poderia ver da mesma forma que um pode conter alguns números aleatórios antes de atribuí-lo 5.

2021-11-24 07:01:48

Eu vejo. Mas a única coisa que não consigo entender é por que eu vejo os mesmos valores toda vez que eu depurar o programa?
jon doe
-1

Quando você cria um novo valor como números inteiros ou matrizes, o sistema irá dar a estes valores de um endereço para salvar seus dados no endereço. Pode haver alguns dados de endereço para outros aplicativos e depois de fechar o aplicativo, RAM não removê-los, então antes de inicializar, você vai ver os dados.

2021-11-24 07:08:54

No uso geral multiusuário em sistemas operacionais, a memória de um processo não contém dados a partir de outro processo, exceto para a data que é deliberadamente compartilhados. O sistema operacional limpa a memória antes reatribuir-lo para outro processo, para fins de segurança.
Eric Postpischil

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................