Frage zu Zeigern
-
Wieso geht das:
void killArray(int* arr,int size) { for(int i=0;i<size;i++) { *arr=0; arr++; } } int* array = makeArray(); cout<<array[3]<<endl; killArray(array,10); cout<<array[3]<<endl;//zeigt nun 0 delete[] array;aber das:
void killArray(int* arr,int size) { for(int i=0;i<size;i++) arr[i]=0; } int* array = makeArray(); cout<<array[3]<<endl; killArray(array,10); cout<<array[3]<<endl;//zeigt alten wert der drin war delete[] array;nicht!
das geht wieder:
void killArray(int arr[],int size) { for(int i=0;i<size;i++) arr[i]=0; } int* array = makeArray(); cout<<array[3]<<endl; killArray(array,10); cout<<array[3]<<endl;//zeigt nun 0 delete[] array;
-
Hi!
Seltsam, was macht denn die Funktion "MakeArray()"?
Folgende Codes setzen alle Werte des Arrays (0-9) auf 0.
void test1( int arr[] ) { for ( int i = 0; i < 10; i++ ) { arr[ i ] = 0; } } void test2( int *arr ) { for ( int i = 0; i < 10; i++ ) { arr[ i ] = 0; } } void test3( int *arr ) { for ( int i = 0; i < 10; i++ ) { *( arr++ ) = 0; } }int main( void ) { int *arr = new int[ 10 ]; int i; for ( i = 0; i < 10; i++ ) arr[ i ] = i; //test1( arr ); //test2( arr ); //test3( arr ); for( i = 0; i < 10; i++ ) std::cout << arr[ i ] << std::endl; delete [] arr; return 0; }grüße
-
int* makeArray() { int* array = new int[10]; for(int i=0;i<10;i++) array[i] = i; return array; }hmm..also müssten meine varianten oben eigentlich funktionieren??
-
Hallo,
asdasdsad schrieb:
hmm..also müssten meine varianten oben eigentlich funktionieren??
darf man fragen, was du bezwecken willst? Jeden Wert im Array auf 0 setzen? Array freigen?
MfG
GPC
-
bisschen rumprobieren mit arrays!
keinen tieferen zweck