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


Anmelden zum Antworten