La mia domanda riguarda i puntatori in C. Per quanto ho appreso e cercato, i puntatori possono solo memorizzare gli indirizzi di altre variabili, ma non possono memorizzare i valori attuali (come numeri interi o caratteri). Ma nel codice sottostante il puntatore char c in realtà sta memorizzando una stringa. Esegue senza errori e fornisce l'output come 'nome'.
#include <stdio.h>
main()
{
char *c;
c="name";
puts(c);
}
Qualcuno può spiegare come un puntatore stia memorizzando una stringa senza memoria o se viene creata memoria dove viene creata e quante dimensioni può essere creata?
Ho provato ad usarlo con il puntatore del tipo intero
#include <stdio.h>
main()
{
int *c;
c=10;
printf("%d",c);
}
ma ha dato un errore
cc test.c -o test
test.c: In function ‘main’:
test.c:5:3: warning: assignment makes pointer from integer without a cast [enabled by default]
c=10;
^
test.c:6:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("%d",c);
^
I puntatori memorizzano l'indirizzo della variabile, quindi perché il puntatore intero è diverso dal puntatore del carattere?
C'è qualcosa che mi manca?