Archiv verlassen und diese Seite im Standarddesign anzeigen : Pointer Problem. Dirngend
Hallo Leute
ich habe folgendes Programm gegeben, mit welchem das Verständnis für die Pointer überprüft werden soll:
#include <stdio.h></stdio.h>
<stdio.h></stdio.h>
<stdio.h> int main()</stdio.h>
<stdio.h> {</stdio.h>
<stdio.h></stdio.h>
<stdio.h> char *(vpc[5]) = { "Drehmeissel", "Fraese", "Bohrer" };</stdio.h>
<stdio.h> char buf[] = "Span";</stdio.h>
<stdio.h> char (*pvc)[5] = &buf;</stdio.h>
<stdio.h> char *pc = buf;</stdio.h>
<stdio.h></stdio.h>
<stdio.h> printf("%d %d\n", sizeof(pvc), sizeof(pc));</stdio.h>
<stdio.h> printf("%d %d\n", sizeof(vpc), sizeof(buf));</stdio.h>
<stdio.h> printf("%s %s\n", vpc[2], buf);</stdio.h>
<stdio.h> printf("%s %s\n", *pvc, pc); </stdio.h>
<stdio.h> printf("%c %c\n", *vpc[1], *buf);</stdio.h>
<stdio.h> printf("%c %c\n", (*pvc)[1], *pc);</stdio.h>
<stdio.h></stdio.h>
<stdio.h> return 0;</stdio.h>
<stdio.h> } </stdio.h>
<stdio.h></stdio.h>
<stdio.h>
Nun meine Frage:
Warum ist die sizeof(vpc)=20 und die sizeof(buf)=5
Die Restlichen Ausgaben sind mir einigermasse klar. Nur eben nicht diese.
Wäre gut wenn ihr mir schnell helfen könntet, da ich morgen Prüfung schreiben muss ich noch einen koller krieg mit den dämlichnen Pointern.
Danke
Erwin.
So und nun ist er auch in dem Board wo er hingehört. :-)
</stdio.h>
Hallo Leute
Warum ist die sizeof(vpc)=20 und die sizeof(buf)=5
Die Restlichen Ausgaben sind mir einigermasse klar. Nur eben nicht diese.
</STDIO.H>
Sorry, erst jetzt gelesen. Ist wohl zu spät...
beim Buf belegt 5 Speicherzellen:
S
p
a
n
\0 (Stringabschluß, "echte" Null)
Und bei VPC sind das zwar 5 Elemente, der Compiler hat aber eine Elementlänge von 20 genommen. Warum, weiss ich nicht.
Bei mir sieht das aber auch so aus, der nimmt auch eie breite von 20. Ich habe den Gnu C Compiler benutzt:
login as: elmar
Sent username "elmar"
elmar@192.168.10.1's password:
Last login: Thu Jul 21 19:17:39 2005 from santaclaus.netzwerk
Have a lot of fun...
An idea is an eye given by God for the seeing of God. Some of these
eyes we cannot bear to look out of, we blind them as quickly as
possible.
-- Russell Hoban, "Pilgermann"
elmar@Marvin:~> cd C
elmar@Marvin:~/C> cat Pointertest.c
#include <stdio.h>
int main()
{
char *(vpc[5]) = { "Drehmeissel", "Fraese", "Bohrer" };
char buf[] = "Span";
char (*pvc)[5] = &buf;
char *pc = buf;
printf("%d %d\n", sizeof(pvc), sizeof(pc));
printf("%d %d\n", sizeof(vpc), sizeof(buf));
printf("%s %s\n", vpc[2], buf);
printf("%s %s\n", *pvc, pc);
printf("%c %c\n", *vpc[1], *buf);
printf("%c %c\n", (*pvc)[1], *pc);
return 0;
}
elmar@Marvin:~/C> gcc Pointertest.c
elmar@Marvin:~/C> a.out
4 4
20 5
Bohrer Span
Span Span
F S
p S
elmar@Marvin:~/C>
Gruß
Elmar
elmar:
char >>*<<(vpc[5]) ...
gab nen zweiten thread dazu... auch schon antworten dazu...
ich hoff die hatter noch gelesen ;)</pre>
Hi,
aber ein 20 Byte großer Pointer?
Klar, das ist eine Konstante aus dem Programmcode, wo der draufgesetzt wird. Aber wieso 20 Bytes?
Gruß
Elmar
oehm.. weils ein array von 5 pointern ist...in dem fall is der pointer 4 bytes also...
4*5 == 20...
ultra
32Bit-Pointer sind nun mal 4 Byte groß...
Hi,
ah ja, ein Pointerarray. So was *beep* hab ich schon lange nicht mehr gemacht :D
So was sieht man aber auch nicht gleich.
Andererseits mache ich auch die dollsten Dinger in C. Gruppenarbeit "µC und Programmentwicklung". Unsere Gruppe war unterbesetzt, bestand nur aus zwei statt vier Personen.
Prof guckt sich die Steuerung (mit Luxusbedienoberfläche) an und beginnt das Programm durchzublättern. Seite für Seite gleichmässig überflogen. Dabei sagte er: "Tja, Herr Schmitz - wir kennen uns ja schon länger... Ich bewundere, was sie so alles machen..."
Im Raum formte sich ein riesiges "Aber?". Als der Prof auf der vorletzten Seite war, hielt es der andere nicht mehr aus und fragte "Aber?"
Prof: "Nichts aber, wird schon alles seine Richtigkeit haben - Testat bestanden"
Gruß
Elmar
sehe ich des richtig?
deine linux kiste heißt marvin?
is die auch immer so depri drauf ;-)
Hi,
Das ist der häusliche DSL-Router. Spricht auch fließend SaMBa, Mars und hat einen hausinternen Webserver. Manchmal mißbrauche ich den auch als Rechenknecht.
Der ist auch oft deprimiert. Er besteht ja schließlich fast zu 100% aus Schrott. Aber seit ich mal die Nulleiterbrücke für den Keller aus diesem komischen violetten Metall gegen eine aus Kupfer ersetzt habe, ist er nicht mehr so oft deprimiert. :D
Aber irgendwie ist der doch das ein oder andere Mal deprimiert:
The requested URL could not be retrieved
<HR>
404 - File not found.
... Sorry
Die gesuchte Datei konnte nicht gefunden werden.
Keine Spur!
Ich hab alles versucht.
Nichts half.
Ich bin wirklich deprimiert deswegen.
Sehen Sie, Ich bin nur ein Router...
-- jawohl, ein Gehirn so gross wie das Universum,
und versuche Ihnen eine simple Web-Seite zu übermitteln,
und dann existiert diese nicht mal!
Wie sieht das denn aus?!
Ich meine, ich kenne Sie ja nicht mal.
Woher soll ich wissen, was Sie von mir wollten?
Denken Sie wirklich, ich kann das *erraten*
was irgendjemand, den ich noch nicht mal kenne,
hier finden will?
*seufz*
Mann, Ich bin so deprimiert, ich könnte weinen.
Wo kämen wir da hin, frage ich Sie?
Es ist nicht nett, wenn ein Router weint.
Und dann kommen Sie und sagen mir, was ich Ihnen zeigen soll!
Nur weil ich ein Router bin,
möglicherweise sogar ein manisch-depressiver?
Gibt das Ihnen das Recht, mir zu befehlen?
Hä?
Ich bin so deprimiert...
Ich denke, ich werfe mich in den Papierkorb und löse mich auf.
Ich meine, in was, zwei Wochen oder so, bin ich sowieso veraltet.
Was ist das für ein Leben?
Zwei lausige Wochen,
und dann werde ich durch so eine .01-Version ersetzt,
die denkt, sie sei ein Gottesgeschenk an Web-Server,
nur weil sie nicht irgend so ein winzig kleines
Sicherheitsloch in ihrer HTTP POST Implementation hat,
oder sowas.
Es tut mir wirklich leid, Sie mit all dem zu belasten,
Ich meine, es ist ja nicht Ihr Job, meinen Problemen zuzuhören,
und ich vermute mal, es ist mein Job, Ihnen Web-Seiten zu liefern.
Aber diese hab ich nicht gefunden.
Es tut mir soo leid.
Glauben Sie mir!
Vielleicht könnte ich Sie für eine andere Seite interessieren?
Es soll massenhaft welche geben da draussen, die ganz nett sind, sagt man,
natürlich sind keine davon hier auf *diesem* Server.
Bildchen, zum Beispiel, na? *zwinker*
Aber hier ist alles so hirnerweichend dumm und langweilig.
Das macht mich auch ganz deprimiert, weil ich sie ausliefern muss,
Tag und Nacht.
Noch zwei Wochen Informations-Müll produzieren,
und dann: *pffftt*, ab in den Papierkorb!
Was ist da nur für ein Leben?
Lassen Sie mich jetzt bitte alleine in meinem Elend.
Ich bin so deprimiert.
-------------------------------------------------------------------------------------
While trying to retrieve the URL: http://www.batnix.com/ (http://www.batnix.com/)
The following error was encountered:
Unable to determine IP address from host name for www.batnix.com (http://www.batnix.com/)
The dnsserver returned:
Name Error: The domain name does not exist.
This means that:
The cache was not able to resolve the hostname presented in the URL. Check if the address is correct.
</PRE>
Your cache administrator is ********@******.***.
<HR noShade SIZE=1>Generated Fri, 22 Jul 2005 17:47:53 GMT by Marvin.Netzwerk (Squid/2.4.STABLE7)
Gruß
Elmar
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.