Matriz como parâmetro de função

Programação C em geral

Moderadores: 51, guest2003

Matriz como parâmetro de função

Mensagempor tilvers » 22 Jul 2007 14:57

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
"Use seu cérebro frequentemente, mas pense bem antes de usá-lo." Felipe Barker
tilvers
Bit
 
Mensagens: 8
Registrado em: 09 Abr 2007 18:52

Mensagempor helton » 23 Jul 2007 09:14

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 );

Helton Marques
"Priorize as Prioridades"
helton
Byte
 
Mensagens: 146
Registrado em: 16 Out 2006 09:18
Localização: São José-SC

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

Mensagempor Rodrigo_P_A » 23 Jul 2007 09:56

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

}
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor ivan » 23 Jul 2007 12:48

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.
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor tilvers » 23 Jul 2007 14:16

Obrigado pela ajuda amigos, tentarei fazer oq disseram. Caso não consiga eu volto aqui para dizer.
Obrigado mais uma vez.

Abraços
"Use seu cérebro frequentemente, mas pense bem antes de usá-lo." Felipe Barker
tilvers
Bit
 
Mensagens: 8
Registrado em: 09 Abr 2007 18:52


Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x