Página 1 de 1

Matriz como parâmetro de função

MensagemEnviado: 22 Jul 2007 14:57
por tilvers
Olá amigos, eu tenho a seguinte declaração de função:

void especial(char cod[7], int end)

minha dúvida é: como eu faço para atribuir valores ao parâmetro cod quando chamo a função, já que é uma matriz?
Tentei de várias formas e continua dando erro.

Desde já agradeço

MensagemEnviado: 23 Jul 2007 09:14
por helton
pode ser de várias maneiras:

Código: Selecionar todos
especial("foo bar",2);

char aux[7] = "foo bar";
especial(aux,2);

for(i = 0; i < 7;i++ ) aux[i] = i;
especial( aux, 2 );


Re: Matriz como parâmetro de função

MensagemEnviado: 23 Jul 2007 09:56
por Rodrigo_P_A
tilvers escreveu:Olá amigos, eu tenho a seguinte declaração de função:

void especial(char cod[7], int end)

minha dúvida é: como eu faço para atribuir valores ao parâmetro cod quando chamo a função, já que é uma matriz?
Tentei de várias formas e continua dando erro.

Desde já agradeço


vc só vai conseguir atribuir valores para esta tua matriz, se ela for um ponteiro, acho que vc declarou errado, tem que declarar assim:

void especial(char *cod, int end){
}


aí para alterar valores da matriz cod, basta fazer normalmente

cod[0x00]=1;
cod[0x01]=2;

etc....


exemplo de chamada:

void main(void){
char codlocal[7];
especial( codlocal, 0x00);
// a partir daqui, codlocal contém o valor que vc atribuiu dentro da rotina especial

}

MensagemEnviado: 23 Jul 2007 12:48
por ivan
Tilvers,

Toda matriz é um ponteiro!
A diferença sutil é: a este ponteiro definido como matriz é alocado pelo compilador uma qtde de memoria e em alguns compiladores, inicializados com 0x00(zero binário). Mas não conte com a inicialização da área! Inicialize na mão sempre.
Ex:
char cod[7]; // são reservados 7 bytes

Então tanto faz, se na hora de acessar uma região de memória vc o faça por ponteiro ou matriz.
Ex:
char *ptr = "fo bar" //são alocados 7 bytes pq no fim da string tem um \n
char codLocal[] = "fu bar";

Tanto as chamadas 1) como 2) vão funcionar!
1) especial(ptr, 2);
2) especial(codLocal, 2);

Se ainda restarem dúvidas, posta o código com a msg de erro que a gente ajuda na solução.

MensagemEnviado: 23 Jul 2007 14:16
por tilvers
Obrigado pela ajuda amigos, tentarei fazer oq disseram. Caso não consiga eu volto aqui para dizer.
Obrigado mais uma vez.

Abraços