Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

IvanR

Operações com Vetor / ponteiros

Recommended Posts

Qual o problema em meu código?

 

int main(int argc, char* argv[])
{
float *md[15];

   (*md)[0] = 7.0;
   (*md)[1] = 0.0;
   (*md)[2] = 0.0;
   (*md)[3] = 0.0;

   (*md)[4] = (*md)[0] * 8;
   (*md)[5] = 0.0;
   (*md)[6] = 0.0;
   (*md)[7] = 0.0;

   (*md)[8] = 8.9;
   (*md)[9] = 0.0;
   (*md)[10] = 0.0;
   (*md)[11] = 0.0;

   (*md)[12] = 0.7;
   (*md)[13] = 0.0;
   (*md)[14] = 0.0;
   (*md)[15] = 1.0;

  for(int i=0;i<16;i++)
	cout << (*md)[1];

  system("pause");

  return 0;
}

Eu não quero utilizar a forma

 

float md[15];
*p = &md;

Alguém poderia me ajudar ? Abração!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está tentando fazer um ponteiro para array bidimensional certo? Se sim, nessa parte:

float *md[15];
está declarando um array de 10 ponteiros para float...

 

teria que fazer assim:

float (*md)[15]
aqui é um ponteiro para um array de 15 floats

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na hr da declaração os arrays começam do 1 msm!

c você declarar 'int vet[0];' nunca tentei + com ctz resultará num erro!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade em qualquer parte do programa arrays começam do 0. Quando se declara um array o que se informa entre os colchetes é a quantidade de elementos existentes e não o final do array...

 

int v[0] é uma declaração permitida. O que dá erro é você operar com isso. O sinal gerado é SIGBUS,que é enviado quando você tenta escrever num endereço que a CPU não pode endereçar fisicamente (seja porque não existe ou porque não está alinhado).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Insistindo um pouco no assunto, qual o problema com este código ?

 

typedef float MATRIZ4[15];

MATRIZ4 *m;

(*m)[1] = 44;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falha de segmentação.você define um ponteiro,não reserva espaço em memória e quer sair usando.

 

(gdb) l

1 #include <stdlib.h>

2 typedef float MATRIZ[15];

3 int main() {

4 MATRIZ *m;

5 (*m)[1]=44;

6 }

(gdb) b 6

Breakpoint 1 at 0x8048390: file prob.c, line 6.

(gdb) r

Starting program: /home/bcc/ib03/a.out

 

Program received signal SIGSEGV, Segmentation fault.

0x0804838d in main () at prob.c:5

5 (*m)[1]=44;

 

 

É p/ isso que servem os debuggers...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.