Allora..

Riguardo la prima domanda noto un po di carenza di studio caro mio. Eh si perche' dovresti sapere che mentre nella prima fai un assegnamento al puntatore, nella seconda inizializzi un array e queste due operazioni sono concettualmente molto diverse. In poche parole questo e' quello che succede nei due casi:

- "Stringa1" viene memorizato nel text. Al puntatore viene dato l'indirizzo di "Stringa1" (quindi una zona del text).

- "Stringa2" viene memoriazzato nel text. Viene creato spazio sufficiente sullo stack per copiare "Stringa2". "Stringa2" viene copiato pari pari sullo stack (non nell'heap).

Sono due concetti completamente diversi.

Nel BSS vengono memoriazzate le variabili di tipo static (quelle che vengono settate automaticamente a 0).

La parola chiave const non dichiara una costante, ma indica solo che la variabile a cui è associata probabilmente non muterà più il suo stato (come se fosse un consiglio al compilatore). discorso diverso in C++, se vuoi ne possiamo parlare. In C il concetto di costante in quanto tale in realtà non esiste, ma visto che "stringa1" e' readonly possiamo associarla al concetto di costante.

spero di aver risposto alle tue domande, sennò richiedi

bye