![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| High-Level-Programmierung Post Fragen zu C, C + +, Java, SQL, und andere Programmiersprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| Speicher-Adressen | areef4u | High-Level-Programmierung | 0 | 08-04-2006 08:43 AM |
| Multibyte-Zeichen zu ASCII | jerardfjay | Shell Programmierung und Scripting | 8 | 11-18-2005 02:45 AM |
| Hex-Zeichen der ASCII-Datei | budrito | HP-UX | 2 | 08-10-2005 11:26 PM |
| dumme Frage über ASCII-Zeichen | jalburger | High-Level-Programmierung | 2 | 09-28-2004 04:56 PM |
| Speicher-Adressen | Paravozzz | High-Level-Programmierung | 0 | 10-15-2002 01:17 PM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Sprache C + einfache Frage in Bezug auf Speicher-Adressen und ASCII-Zeichen
Nur eine Frage (die auch sein mag, so albern tragen mit mir), dass sich in meinen Augen den anderen Tag. Sie ASCII-Zeichen durch (z. B. / n, 0, a) eine tatsächliche Speicheradresse? Meine Frage stellt sich, weil Im bewusst, dass jedes Mal, wenn ich erstellen und initalise ein Zeiger, wie diese zum Beispiel Code:
int *ptr = 5; Ich bekomme immer eine Null-Zeiger-Fehler. vielen Dank |
|
||||
|
Zitat:
|
|
||||
|
Für den Code habe ich in meinem ersten Post, Code:
int *ptr=5; der Compiler (ich benutze gcc BTW), die ein Warnung, dass ein Zeiger von Ganzzahl worden sei, ohne dass eine notwendige typecast. (Shamrock warnte mich über diese, so dass diese Ausgabe gcc war wohl zu erwarten). Ich habe versucht dieses Code:
char *str="helloworld\n";
printf("string value is %s\n",*str)
und fand das Programm zu, das gut, aber während der Laufzeit habe ich einen segmentation fault Fehler. Ich fand auch, dass in den ersten Code-Segment, wenn Sie die Compiler-Warnung ignorieren und das Programm gerade, Sie erhalten die gleiche Laufzeit-Fehler. Als Zeiger sind zugewiesen werden Speicherstellen (und auf Werte), in Bezug auf diese grundlegende Verständnis und die Tatsache, dass ASCII-Zeichen-Speicher-Adressen haben, sind nicht beide Code-Segmente technisch korrekt? Zuletzt bearbeitet von JamesGoh; am 01-24-2008 07:18 PM.. |
|
||||
|
Code:
int *ptr=5; Pointer kann nur initialisiert werden, auf Null oder null, wenn sie nicht auf eine Variable dieses Typs. Code:
char *str="helloworld\n";
printf("string value is %s\n",*str)
Die "% s" Conversion-Spezifikation ist ein Zeiger Argument nicht, dass die tatsächlichen Charakter * str zeigt. Also, wenn Sie wollen, drucken Sie die gesamte Zeichenfolge ... Code:
printf("string value is %s\n", str);
und wenn Sie wollen, drucken Sie die Zeichen, * str auf ... Code:
printf("str points to %c\n", *str);
|
|
||||
|
Daher ist dies immer der Fall ist (außer für benutzerdefinierte Strings) in der realen Welt Programmierung, auch wenn einzelne ASCII-Zeichen (z. B. 5) Speicher-Adressen haben?
|
|
||||
|
Zitat:
Code:
char v = '5'; |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|