Schrift
[thread]1121[/thread]

Länge eines arrays: länge in Bytes oder Anzahl der Elemente (Seite 2)



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
format_c
 2005-03-14 15:39
#11106 #11106
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ah jetzt gehts. Super. Danke jetzt bin ich schon viel flexibler.
Aber wenn ich nicht vector benutze und ein array an eine Funktion übergeben möchte stoßße ich da irgendwie auf einige Fehler:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> cat test.cpp && g++ test.cpp
#include <stdio.h>
void print_array (int[] a) {
int laenge = sizeof(a) / sizeof(int);
for (int i=0;i<laenge;i++) {
printf("%d\n",a[i]);
}
}
int main () {
int a[2] = {1,2};
print_array(a);
return 0;
}

test.cpp:2: error: parse error before `)' token
test.cpp: In function `void print_array(...)':
test.cpp:3: error: `a' undeclared (first use this function)
test.cpp:3: error: (Each undeclared identifier is reported only once for each
function it appears in.)


Woran liegt das? Oder braucht man gerade auch für so etwas vector??

Gruß Alex
esskar
 2005-03-14 15:50
#11107 #11107
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das liegt daran, dass du an der stelle in print_array ein sizeof auf einen Pointer machst; und ein Pointer auf einer 32-Bit Maschine ist immer 4 Bytes groß (egal wie der typ ist).
Du müsstest wenn schon die größe mitgeben; also in diesem fall
Code: (dl )
1
2
void print_array (int *a, int laenge) {
}


und pass auf, wenn du lokale deklarationen machst
Code: (dl )
int a[2] = {1,2};

ist zwar solange okay bis du das array vergrößern willst; lokale deklarationen kannst du in ihrer größe nicht ändern; du müsstest dann schon mit malloc, realloc und free arbeiten (oder wenn du richtig c++ schreiben willst mit new und delete, wobei du dir dann das realloc für new/delete selber schreiben musst). Wenn du wissen willst, wie das alles passiert in c/c++, kann ich dir selber schreiben nur empfehlen; ansonsten benutz so sachen wie die STL; damit kann man auch schnell und effizient programmieren!
format_c
 2005-03-14 16:15
#11108 #11108
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ist ja blöd. Puh tu ich mich damit noch schwer.... Mal schauen wann mein kleines Hirn das gescheit kappiert. Dann werd ich wohl weiter wild mit Zeigern umherwerfen müssen.
Danke dir schon mal.

Gruß Alex
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2005-03-13 21:03.