char zeiger auf int zeiger

#1245592
Lesenswert?

Hallo Leute,

ich habe eine doppelzeiger. Die sollen auf eine iht zeiger zeigen wie 
folgt:
1
int array[10];
2
int *ptr;
3
char **dptr;
4

5
ptr = array;// ptr zeige auf array
6

7
// so habe ich mir gedacht aber dann bekomme ich Fehlermeldung.
8
dptr = (char)&ptr;

Es wäre sehr nett, wenn ihr mir sagen könnte wie ich in diesem Falls 
scheriben soll
Gast #1245601
Lesenswert?

Carolin Zapa wrote:
> int array[10];
> int *ptr;
> char **dptr;
>
> ptr = array;// ptr zeige auf array
Nee, er zeigt auf einen Vektor, das is (manchmal) was Anderes.

> // so habe ich mir gedacht aber dann bekomme ich Fehlermeldung.
> dptr = (char)&ptr;
Was soll das denn werden?
#1245611
Lesenswert?

1
int array[10];
2
int *ptr;  // kann auf eine int zeigen
3
int **dptr; // kann auf einen int-Zeiger zeigen
4

5
ptr = array; // ptr zeige auf erstes array-Element
6

7
// so hast du dir vielleicht gedacht, jedenfalls ohne Fehlermeldung.
8
dptr = &ptr;

was du damit vorhaben könntest, bleibt mir allerdings irgendwie 
verborgen...
#1245624
Lesenswert?

Carolin Zapa wrote:

> Es wäre sehr nett, wenn ihr mir sagen könnte wie ich in diesem Falls
> scheriben soll

Hmm.
Das was du da vorhast, ist ziemlich sinnfrei.
Scheint so, als ob dich die Sprache bzw. der Compiler vor einer Dummheit 
bewahrt.
Also: Was hast du eigentlich vor? Wozu brauchst du das Ganze?
#1245663
Lesenswert?

ohne garantie und test, könnte funktionieren:
1
send(socket, (char*) intptr, sizeof(int32));

sonst musst du nur einen weg finden, einen int32 in ein char-array zu 
zerlegen und wieder zusammenzusetzen. (tipp: etwas ähnliches wurde in 
letzter zeit hier im forum diskutiert)
Gast #1245673
Lesenswert?

Je nach C-Standard: Einfach casten:
1
uint32_t array[10];
2
send(socket, (char *) array, 10 * sizeof(uint32_t));

Oder einfach übergeben:
1
uint32_t array[10];
2
send(socket, array, 10 * sizeof(uint32_t));

Als es noch kein void gab, war char der 'Alles'-Typ, daher gehts 
mitunter ohne Cast.

Sinnvoller wärs allerdings, Byte-Order-Kram zu benutzen, sonst 
versendest du Datenmüll. So von wegen htonl und umgekehrt.
#1245689
Lesenswert?

Carolin Zapa wrote:
> ich habe ein int32 array[10] und er hat ein int32 ptr zu testen. Nach
> dem Test wollte ich das mit TCP senden.

Was wolltest du senden?
Das int Array?

> Die send funkt versteht aber nur send(socket, char*, length).

Sieh das char* in diesem Fall als: "Egal worauf der Pointer zeigt, ich 
sende von dort beginnend length Bytes"

In neuerem C wäre das ein void Pointer, aber aus historischen Gründen 
wurde das wohl auf einem char Pointer belassen. Es spricht also nichts 
dagegen, das man sich den Pointer auf den Datentyp zurechtcastet, den 
die send Funktion haben will.

1
int array[10];
2

3
...
4

5
  send( socket, (char*)test, sizeof(test) );

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren