Problema di inizializzazione

di il
2 risposte

Problema di inizializzazione

Ciao a tutti, utilizzo Visual Studio 2013 e ho il seguente problema quando provo a compilare questo codice:
#include <stdio.h>
#include <stdlib.h>

int main()
{
	char *a;
	*a = 'x';
	printf("%c", *a);

	getchar();
	return 0;
}
L' errore che mi dà è C4700: utilizzata variabile locale 'a' non inizializzata.
L' errore non mi viene dato in questo caso:
#include <stdio.h>
#include <stdlib.h>

int main()
{
	char *a;
	char b;
	a = &b;
	*a = 'x';
	
	printf("%c", *a);

	getchar();
	return 0;
}
ma è un po' fastidioso dover dichiarare una variabile inutile (char b). Non è proprio possibile non inizializzare un puntatore? E se è necessario inizializzarlo come si può inizializzarlo con un valore NULL?

2 Risposte

  • Re: Problema di inizializzazione

    Nel primo caso tu dichiari un puntatore, esso è un indirizzo, per cui non hai allocato memoria per il tuo char. Dovresti allocare la memoria per poterlo utilizzare utilizzare.
    char *a = malloc(sizeof(char));
  • Re: Problema di inizializzazione

    è un po' fastidioso ...
    Fai un po' di confusione con i puntatori ... dovresti rivedere i concetti teorici.

    Puoi anche non inizializzare un puntatore ma NON puoi usarlo se non è inizializzato.

    Puoi anche porre uguale a NULL il puntatore con

    char *a = NULL;

    ma dopo NON puoi utilizzarlo dato che non punta ad una zona di memoria.
Devi accedere o registrarti per scrivere nel forum
2 risposte