Matriz em C

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Matriz em C

Mensagempor Pask » 18 Jul 2008 09:07

Amigos, por que o compilador C só aceita que a declaração de uma matriz seja imediatamente abaixo da instrução "while(true)" Vejam:

main( ){
while(true){
int y[2]={2,5}; //por que essa declaração tem que estar aqui?
....outras instruções
}
} // deste modo o compilador aceita

main( ){
while(true){
...outras instruções // deste modo o compilador não aceita
int y[2]={2,5}; //se houver alguma instrução entre while e a matriz, o compilador não aceita
....outras instruções
}
}
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor tcpipchip » 18 Jul 2008 10:13

Pq voce deve obdecer a semantica....


[void] funcao([void] tipo dado param)
{
tipo dado;
instrucao;
}

Ou seja, tipo dado deve ser declarado no inicio de bloco...no caso {

T+

TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Pask » 18 Jul 2008 11:32

Um exemplo simples, por favor.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Re: Matriz em C

Mensagempor Ander_sil » 18 Jul 2008 12:23

Exemplo simples...

Pask escreveu:main( ){
while(true){
int y[2]={2,5}; //por que essa declaração tem que estar aqui?
....outras instruções
}
} // deste modo o compilador aceita


esta ai...
Anderson Chrispim da Silva
chrispimdasilva@gmail.com
Ander_sil
Byte
 
Mensagens: 368
Registrado em: 30 Out 2006 09:58
Localização: Campinas - SP

Mensagempor Pask » 18 Jul 2008 12:40

Mais um questionamento: se eu declarar uma matriz do tipo char para apresentar um texto num lcd por exemplo eu faço:

char x[ ]={"meu texto"};

As aspas no início e no final do texto fazem parte da sintaxe para esse tipo de declaração de matriz string em C, ou seja, não é possível escrever um texto sem usar as aspas nesse tipo de declaração.
Mas, suponhamos que eu queira que um texto apareça entre aspas também no lcd, como, por exemplo:

char x[ ]={""com aspas""};

Se eu fizer isto, o compilador vai gerar uma mensagem de erro. Então, como eu poderia gerar um texto entre aspas para um lcd?
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor tchuky » 18 Jul 2008 13:17

use:

char x[ ]={""com aspas""};

nao sei muito de c, mas deve ser assim!!!


Pask escreveu:Mais um questionamento: se eu declarar uma matriz do tipo char para apresentar um texto num lcd por exemplo eu faço:

char x[ ]={"meu texto"};

As aspas no início e no final do texto fazem parte da sintaxe para esse tipo de declaração de matriz string em C, ou seja, não é possível escrever um texto sem usar as aspas nesse tipo de declaração.
Mas, suponhamos que eu queira que um texto apareça entre aspas também no lcd, como, por exemplo:

char x[ ]={""com aspas""};

Se eu fizer isto, o compilador vai gerar uma mensagem de erro. Então, como eu poderia gerar um texto entre aspas para um lcd?
tchuky
Bit
 
Mensagens: 8
Registrado em: 14 Dez 2006 15:20

Mensagempor Maurício » 18 Jul 2008 13:28

Salve, Pask.

Seu compilador deve ter algum defeito, ou é alguma configuração no chip do projeto, ou outra coisa qualquer, porque vc pode declarar variáveis em qualquer abertura de blocos, o que faz com que vc crie variáveis locais, dessa forma.
Isso daqui sim, é permitido e tem que funcionar:

Código: Selecionar todos
void main( void )
{
int y[2]={2,5};

while(true)
{
....outras instruções
}
}


E no caso da declaração da string, vc precisa declarar caractere por caractere, e depois, finalizar a string manualmente, desse jeito:

Código: Selecionar todos
char x[ ]={ '"', 'c','o','m',' ', 'a','s','p','a','s','"','\0' };


[]'s
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor ivan » 18 Jul 2008 14:09

Completando...

No caso de string, pode se fazer a declaração como ponteiro e acessar como uma matriz.

char *str = "texto qualquer";
char letra1, letra2, letra3;

letra1 = str[0];
letra2 = str[1];
letra3 = str[2];
"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


Voltar para PIC

Quem está online

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

cron

x