Ma infatti è un puntatore (come ho detto), quello che non capisco è perché tu creda che sia un puntatore doppio...Originariamente inviato da Freax
perché dovrebbe? perché per quanto ne so è un puntatore, o meglio la stringa "Ciao Mondo" è data in "gestione" ad un puntatore.
Credo che alla fine il modo più semplice per capire cosa siano gli string literals è vedere la definizione dello standard (C99, §6.4.5, ¶5), che in sintesi dice che gli string literal altro non sono che delle stringhe (array di char) globali, a cui ti viene dato un puntatore la cui modifica è proibita. Ossia, se tu scrivi:
è come se scrivessi:codice:#include <stdio.h> int main() { puts("Hello World!"); }
con la restrizione aggiuntiva che cercare di modificare VariabileNascosta risulta in undefined behavior.codice:#include <stdio.h> char VariabileNascosta[]={'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', 0}; int main() { puts(VariabileNascosta); }

Rispondi quotando