![]() |
Pages (2): « 1 [2] Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Reti di calcolatori (http://www.dsy.it/forum/forumdisplay.php?forumid=68)
-- [CURIOSITA'] Programmazione in C (http://www.dsy.it/forum/showthread.php?threadid=16533)
Originally posted by Voodoo
Salve gente,come da consiglio di yeah,visto che sono ancora al momento uno Winzozziano (),ho scaricato MinGW...
Volevo esser sicuro di averlo installato bene,perchè scrivendo un codice preso pari pari da una guida al C,l'applicazione mi si impalla...Ecco il codicillo simplizissimus:
code:
#include <stdio.h> char *string = "Rosso\n"; int main(int argc, char *argv[]) { printf(string); *(string+3) = 'p'; printf(string); }
code:
#include <stdio.h> char s[] ="Rosso\n"; char *string = s; int main(int argc, char *argv[]) { printf(string); *(string+3) = 'p'; printf(string); return 0; }
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
Originally posted by UZI
ma il fatto è che questa stringa è dichiarata come costante

per cui evidentemente un accesso in memoria del tipo *(string+3)

code:
#include <stdio.h> char *string = "Rosso\n"; char p; int main(void) { p = *(string+3); printf("%c", p); }

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~
Non so cosa stabilisca lo standard a riguardo, ma ricordo anche io che una stringa usata in quel modo dovrebbe risultare costante.
Stranamente, il compilatore del Visual C++ non la pensa allo stesso modo e il codice compilato con esso funziona perfettamente 
Io suggerirei cmq di usare
char string[] = "Rosso\n";
così sei sicuro che puoi scriverci e leggerci senza problemi 
__________________
?
Originally posted by DeepBlue
mmm
Più o meno
Leggete qui: http://www.eskimo.com/~scs/C-faq/q1.32.html
No, calma
In lettura puoi benissimo accedere a quella zona di memoria. Infatti questo:

__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
Originally posted by UZI
ondo questa logica, il ragionamento non fà una grinza, ma a quanto dice yeah ora con visual c++ il codice funziona... mah![]()

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~
Originally posted by DeepBlue
Il compilatore del VC++ non è gcc![]()
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
Personalmente non trovo scorretto il comportamento di vc++: quando viene dichiarato il tutto, in qualche modo il programma indica una porzione di memoria in cui ci sono alcune lettere contigue.
Tale memoria appartiene al processo come quella di qualsiasi altra variabile (per lo meno globale e locale al blocco di codice in esecuzione) e dovrebbe essere scrivibile senza problemi.
La cosa che mi è strana è che l'errore lo da in runtime, non in compile time... boh 
__________________
?
Originally posted by yeah
Personalmente non trovo scorretto il comportamento di vc++: quando viene dichiarato il tutto, in qualche modo il programma indica una porzione di memoria in cui ci sono alcune lettere contigue.
Tale memoria appartiene al processo come quella di qualsiasi altra variabile (per lo meno globale e locale al blocco di codice in esecuzione) e dovrebbe essere scrivibile senza problemi.
La cosa che mi è strana è che l'errore lo da in runtime, non in compile time... boh![]()
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
Beh,grazie ragazzi,sono veramente commosso per tutto l'interessamento dimostrato per quel programmino,quel "coso" innocente...
Mi avete reso un bambino felice
![]()
__________________
GET DROPBOX
# il grado di lentezza è direttamente proporzionale all'intensità della memoria;il grado di velocità è direttamente proporzionale all'intensità dell'oblio (Kundera) #
BLOG: Byte Strike
ChRiS 
| All times are GMT. The time now is 16:58. | Pages (2): « 1 [2] Show all 24 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.