Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wieso Speicherzugriffsfehler?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.09.2003, 21:26 Uhr
Pablo
Supertux
(Operator)



C++:
void g(char* x, int size)
{
        int i;char v;
        for(i=1; i<size;++i){
                v = x[i];
                x[i] = v;
        }
}
...
char* x="abcd";
g(x,4); // hier der Fehler



wieso Speicherzugriffsfehler? Das Problem leigt an x [ i ] = v;

Wieso kann ich diese Zuweisung nicht machen?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 17.09.2003 um 21:31 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.09.2003, 22:20 Uhr
kronos
Quotenfisch
(Operator)


mit

C++:
for(i=1; i<size;i++)

sollte es funktionieren.

C++:
for(i=1; i<size;++i) dosomestuff();

entspricht

C++:
while(i<size)
{
i++;
dosomestuff();
}


--> dosomestuff wird zuletzt bei i==size ausgeführt, daher ungültiger array-zugriff
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 17.09.2003 um 22:25 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.09.2003, 22:40 Uhr
Pablo
Supertux
(Operator)


Ich hab schon herausgefunden, wieso.

Das haben wir vor 2 Wochen oder so bereits geantwortet.

Wenn ich char x[] = "abcd"; deklariere statt char* x="abcd" dann funktioniert es.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.09.2003, 22:59 Uhr
0xdeadbeef
Gott
(Operator)


@kronos: Das ist nicht richtig. Eine for-Schleife wird immer nach dem Schema

C++:
for(a;b;c) { d; e; }
   |
   |
   V
a;
while(b) {
  d;
  e;
  c;
}


umgesetzt. Das heißt,

C++:
for(i = 0; i < size; ++i) dosomestuff();


Ist gleichbedeutend mit

C++:
i = 0;
while(i < size) {
  dosomestuff();
  ++i;
}


Spätestens in C++ ist es auch guter Stil, das Präinkrement zu benutzen, weil es bei überladenen ++-Operatoren idR. einen Copy-Konstruktor spart.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.09.2003, 23:58 Uhr
virtual
Sexiest Bit alive
(Operator)


@pablo
Weil Du exakt das gleiche Problem hast, wie in diesem Thread beschrieben
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.09.2003, 00:10 Uhr
bigfish




Zitat:
Pablo Yanez Trujillo postete
Ich hab schon herausgefunden, wieso.

Das haben wir vor 2 Wochen oder so bereits geantwortet.

Wenn ich char x[] = "abcd"; deklariere statt char* x="abcd" dann funktioniert es.





oh yeah!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.09.2003, 00:18 Uhr
Pablo
Supertux
(Operator)


@virtual, danke. Stimmt, das gleiche Problem wieso bin ich nicht drauf gekommen
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.09.2003, 18:54 Uhr
kronos
Quotenfisch
(Operator)


oh, dann lag' ich mit meiner erklärung wohl ziemlich daneben. sorry, ich dachte wirklich, das wäre so.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: