[RESOLVIDO] vetores em c

4 respostas
AntonioDiego

Nesse codigo:

unsigned char[] a={100,121,111,100};

unsigned char *buffer=&a;

unsigned char *b2=buffer+1;

qual é o valor de buffer[2] ?;
e o valor de b2[2] ?

4 Respostas

ViniGodoy

Por que não tenta rodar o código e resolver você mesmo essa pergunta?

AntonioDiego

é que meu computador tem controle dos pais.
so ta permitido netbeans e jdk.
mais ja resolvi.
Code Pad.
buffer[2] retorna 111.
b2[2] retorna 100.

ViniGodoy

Isso mesmo. Quando você fez:

Você criou um ponteiro para o primeiro elemento de a. Acessar buffer[2] é o mesmo que acessar *(buffer + 2), ou seja, o terceiro elemento.

Quando você cria

Você criou um ponteiro para o segundo elemento do buffer. Acessar b2[2] é o mesmo que acessar
*(buffer+1+2) ou seja, o quarto elemento.

Note que o [] com ponteiros simplesmente faz uma soma, o que permite que ele funciona com array. Para comprovar que é somente uma soma, vc pode até imprimir 2[buffer] e 2[b2], que também vai funcionar. Afinal:
*(buffer + 2) é a mesma coisa que *(2 + buffer)

AntonioDiego

ok.

Criado 12 de outubro de 2011
Ultima resposta 12 de out. de 2011
Respostas 4
Participantes 2