6 Stimmen

Arrays, die in Zeiger zerfallen

Bitte helfen Sie mir, die folgenden Programme zu verstehen.

#include<stdio.h>
int main()
{
    int a[7];
    a[0] = 1976;
    a[1] = 1984;
    printf("memory location of a: %p", a); 
    printf("value at memory location %p is %d", a, *a); 
    printf("value at memory location %p is %d", &a[1], a[1]);
    return 0;
}

&a[1] y &a+1 . Sind sie gleich oder unterschiedlich?

#include <stdio.h> 
int main() 
{
    int v[10];
    int **p; 
    int *a[5];
    v[0] = 1234;
    v[1] = 5678;
    a[0] = v; 
    a[1] = v+1;
    printf("%d\t%d\t%d\t%d\n", *a[0],*a[1],a[0][0],**a);
    printf("%d\n", sizeof(v));
    return 0;
} 

Ich wollte wissen, wie *a[5] im Speicher dargestellt wird. Ist *a einen Basiszeiger, der auf a[0],a[1],a[2],a[3],a[4] ?

#include<stdio.h>

int main()
{
    int v[10];
    int **p;
    int (*a)[10];
    a=&v;
    printf("%d\n",*a);
        return 0;
}

a=v; // gives error why? hace v zerfallen hier in *v . Dann gilt &v zerfallen in (*)[]v ? & bedeutet const pointer. Wie ist es hier möglich, einen const-Zeiger ohne typecast auf einen non-const-Zeiger zu setzen?

Wo wird das Array im Speicher abgelegt? Wird es im Datensegment des Speichers gespeichert.

#include<stdio.h>

int main()
{
    int carray[5]={1,2,3,4,5};
    printf("%d\n",carray[0]);
    printf("%d\t%d\t%d\n",sizeof(carray),sizeof(&carray),sizeof(&carray[0]));
    return 0;
}

BEARBEITET:

Ich habe durch einige der Artikel, die angegeben, dass die einzigen zwei möglichen Situationen, in denen ein Array-Name nicht in Zeiger decyed werden kann, ist die sizeof y & . Aber in dem obigen Programm sizeof(&carray) gibt die Größe mit 4 an. und &carray zerfällt in (*)[]carray da es ein r-Wert ist.

Dann die Aussage, dass Array-Namen unter zwei Bedingungen nicht in Zeiger zerlegt werden können sizeof y & wird hier falsch.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X