IvanR 0 Denunciar post Postado Agosto 21, 2008 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
gRoOvE 0 Denunciar post Postado Agosto 22, 2008 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
IvanR 0 Denunciar post Postado Agosto 22, 2008 Entendi a diferença... Mas float *md[15]; seria um array pra 16 floats naum ? 0 a 15 Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Agosto 22, 2008 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
_Isis_ 202 Denunciar post Postado Agosto 22, 2008 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
IvanR 0 Denunciar post Postado Agosto 25, 2008 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
_Isis_ 202 Denunciar post Postado Agosto 25, 2008 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