Zeiger für 2D Array



  • #include <stdio.h>
    
    main()
    {
    	int *zeiger;
    	int array [16][16]; 
    	int i, j ; 	
    
    	for (i=0; i<16; i++) {
    		for (j=0; j<16; j++) {
    			array[i][j] = i; 
    		}
    	}
    
    	zeiger = array + 4; 
    
    	printf ("%d\n", *zeiger); 
    
    }
    

    Ich will den Zeiger jedes mal 4 Byte nachschieben.

    Z. b. Zuerst zeiger zeigt array[0][4] danach array[0][8] .... array[2][4] array[2][8] array[2][12] Könnt ihr den Kode da oben korrigieren?

    Wie geht das? Warum ist mein Code falsch?

    Es klappt wenn es nur ein dimensional array ist. Warum? Z. b. den unteren Kode.

    #include <stdio.h>
    
    main()
    {
    	int *zeiger;
    	int array [16]; 
    	int i; 	
    
    	for (i=0; i<16; i++) {
    
    			array[i] = i; 
    
    	}
    
    	zeiger = array + 4; 
    
    	printf ("%d\n", *zeiger); 
    
    }
    


  • Du meinst statt "4 Byte" wohl "4 int"?



  • Wutz schrieb:

    Du meinst statt "4 Byte" wohl "4 int"?

    Genau.

    Kannst du auch die Frage beantworten.



  • Was gibt den dein Programm aus?
    Und was erwartest du, dass du behauptest es wäre falsch?



  • #include <stdio.h>
    
    int main()
    {
        int *zeiger;
        int array [16][16];
        int i, j ;    
    
        for (i=0; i<16; i++) {
            for (j=0; j<16; j++) {
                array[i][j] = i+j*16;
            }
        }
    
        zeiger = array;
    
        printf ("%d\n", *zeiger);
        zeiger+=4;
        printf ("%d\n", *zeiger);
        zeiger+=4;
        printf ("%d\n", *zeiger);
        ...
        return 0;
    }
    


  • Schade, ich dachte er würde es selber rausfinden. 🙂

    Ich hätte jetzt

    array[i][j] = i*100+j;
    

    vorgeschlagen, dann sieht man den Index besser.


Anmelden zum Antworten