Problema em C

Desminto essa necessidade. Copia apenas o ponteiro, ou seja, o endereço inicial da memória do array.

A única forma de pôr o compilador a copiar tudo na passagem de argumentos é usar estruturas. Ver demo abaixo.
Código:
struct xpto {
        char a[100];
};

void foo(struct xpto x)
{
        printf("sizeof(x): %d\n", sizeof(x));
        x.a[0] = '0';
}

void foo2(char b[100])
{
        printf("sizeof(b): %d\n", sizeof(b));
        b[0] = '0';
}

main()
{
        struct xpto x;
        char b[100];
        char c = 'x';


        x.a[0] = c; foo(x); printf("orig %c, new %c\n", c, x.a[0]);
        b[0] = c; foo2(b); printf("orig %c, new %c\n", c, b[0]);
}
 
Back
Topo