Fabio_Jerena escreveu:Então cara, mas olha só que bizarro...
Ok, resolvo o problema, já que entendemos como que o compilador está se comportando para essa minha sintaxe, mas e aí, é assim mesmo? Pelo que eu entendi não é isso que o C prevê!
Ficou chateado de ser algo tão simples e não funcionar de jeito nenhum, como alguem que está aprendendo fica nessas horas? O livro não é preciso, o compilador não funciona, eu não estou sabendo escrever o código???
Fora que pensando em otimização, prá quê fazer mais contas se o compilador deveria me entregar essa informação através de index que eu forneço?
Isso que eu não consigo entender e queria o veredito de quem trabalha com o CCS e saber se é uma limitação dele, se estou abordando o problema incorretamente, costumo ter bastante problema (principalmente na depuração dos meus códigos), mas até o presente momento só erros meus, não achei nenhum problema no CCS...
Agradeço a ajuda!
O compilador esta certo.. leia o que o o chip select falou... em C "matrizes" nada mais são do que arrays lidos de uma forma indexada. nada mais. Quando você passa um array para uma função.. você está passando o ponteiro para o primeiro elemento do array.. ou seja &array[0] por exemplo. Desta forma.. a suafunção não sabe que ela deve interpretar essa "matriz" ja que ela não sabe como deve indexar ela.
Uma saida que existe é usar ponteiros de ponteiros .. ficaria mais ou menos assim:
- Código: Selecionar todos
#include <stdlib.h>
.
.
.
.
int Funcao_Teste(int x, int y, int **Tabela)
{
return Tabela[x][y];
}
int main()
{
int nrows = 8;
int ncolumns = 8;
int i;
int **TABTEST;
TABTEST = (int**)malloc(nrows * sizeof(int *));
if(TABTEST == NULL)
{
//lida com o erro...
}
for(i = 0; i < nrows; i++)
{
TABTEST[i] = (int*)malloc(ncolumns * sizeof(int));
if(TABTEST[i] == NULL)
{
//lida com o erro...
}
}
array[1][1] = 10;
//define os valores das variaveis....
int buffer_t;
buffer_t = Funcao_Teste(1,1, TABTEST);
.
.
.
.
}
Isso pode ser feito num PIC sem problemas.. abs