Forum: PC-Programmierung Anfangadresse als Rückgabewert


von Dibo D. (Firma: FH) (duspol)


Lesenswert?

1
#include "stdafx.h"
2
3
4
int *decode_arr(){
5
6
7
int *y;
8
int element[]={1,2,4,8,16,64};
9
10
y = element;
11
12
return y ; //Rückgabe der Adresse element[0]
13
14
}
15
16
17
int end_arr (int *ptr){
18
19
20
  int i;
21
22
  for(i=0;i<6;i++)
23
24
  printf("\nelement[%i] = %i",i,ptr[i]);
25
26
  return 0;
27
28
29
30
31
}
32
33
34
35
36
37
int _tmain(int argc, _TCHAR* argv[])
38
{
39
40
  int *x;
41
42
  x =& *decode_arr();// x kriegt die adresse von element[0]
43
44
  end_arr(x);// Adresse elemnt[0] in die Funktion rein.
45
46
47
48
getchar();
49
50
  return 0;
51
}

Ich weiss,wie es anders geht.In dieser Form mit 2 Unterfunktionen möchte 
ich arbeiten nicht andersrum.

Ich möchte in einer Unterfunktion die Anfangadresse von array 
zurückgeben.Den Wert in die andere Unterfunktion reinhauen.Dann in der 
Unterfunktion die Arrays wieder ausgeben.Wo ist mein fehler?

von Karl H. (kbuchegg)


Lesenswert?

Dobrowski Yesil schrieb:
> Wo ist mein fehler?

Das du kein C-Buch hast.

Nachdem die Funktion decode_arr verlassen wurde, existiert dein Array 
element schlicht und ergreifend nicht mehr. Es ist weg, in den ewigen 
Bithimmel eingegangen. Somit hast du ausserhalb der Funktion einen 
nutzlosen Pointer, der auf etwas zeigt, was nicht mehr existiert.

von Karl H. (kbuchegg)


Lesenswert?

1
#include "stdafx.h"
2
3
int *decode_arr() {
4
  int *y;
5
  static int element[]={1,2,4,8,16,64};
6
7
  y = element;
8
  return y ; //Rückgabe der Adresse element[0]
9
}
10
11
int end_arr (int *ptr) {
12
  int i;
13
14
  for(i=0;i<6;i++)
15
    printf("\nelement[%i] = %i",i,ptr[i]);
16
17
  return 0;
18
}
19
20
int _tmain(int argc, _TCHAR* argv[])
21
{
22
  int *x;
23
24
  x = decode_arr();// x kriegt die adresse von element[0]
25
26
  end_arr(x);// Adresse elemnt[0] in die Funktion rein.
27
28
  getchar();
29
30
  return 0;
31
}

von Dibo D. (Firma: FH) (duspol)


Lesenswert?

C Programmieren von Anfang an habe ich von Erlenkötter:-).

Danke für die ausführliche Erklärung!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.