005
08.01.2007, 16:24 Uhr
Pablo
Supertux (Operator)
|
Zitat von J-jayz-Z: |
Na ja, auf die Idee bin ich auch schon gekommen, das so zu machen, aber das war ja nicht der Sinn meiner Frage Wenn beim char Array am ende ein \0 hängt, um das Array abzuschließen, sollte hinter einem int Array doch auch etwas hängen, womit man dann weiß, wann es das Ende erreicht hat?! Aber meine hauptfrage war eigentlich: Wieso geht *(1+bla) und *(++bla) nicht? Ein Array ist doch in C/C++ nicht anderes, wie ein Pointer?!
EDIT: Wenn das mit dem Array dann schon nicht geht, wieso geht das hier auch nicht:
C++: |
#include <iostream>
int main(int argc, char* argv[]) { int foo[] = {12,16,18}; int* bar = &*foo; while(*bar) { std::cout << *(bar++) << std::endl; } return EXIT_SUCCESS; }
|
Irgendwie muss der Compiler doch auch wissen, wann foo[] zu Ende ist. Wie weiß er es, wenn es keinen "Trenner" gibt zu dem int Array und dem Wert der danach kommt?
|
wieso denn alles so kompliziert?
C++: |
#include <iostream>
int main(int argc, char* argv[]) { int foo[] = {12,16,18}; int *bar = foo;
for(int i = 0; i < 3; ++i) std::cout << bar[i] << std::endl; return 0; }
|
Zitat: |
Wieso geht *(1+bla) und *(++bla) nicht? Ein Array ist doch in C/C++ nicht anderes, wie ein Pointer?!
|
Sollte eigentlich beide gehen. Und ein Array ist kein Pointer (und ein Pointer ist kein Array). Mann kann einen Pointer wie ein Array behandeln, sind aber 2 unterschiedliche Sachen. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 08.01.2007 um 16:33 Uhr von Pablo editiert. |