bash-3.1$ gcc retarray.c -o retarray
retarray.c: In function 'retarray':
retarray.c:5: warning: braces around scalar initializer
retarray.c:5: warning: (near initialization for 'tridmat[0][0]')
retarray.c:5: warning: initialization makes pointer from integer without a cast
retarray.c:5: warning: excess elements in scalar initializer
retarray.c:5: warning: (near initialization for 'tridmat[0][0]')
retarray.c:5: warning: excess elements in scalar initializer
retarray.c:5: warning: (near initialization for 'tridmat[0][0]')
retarray.c:6: warning: braces around scalar initializer
retarray.c:6: warning: (near initialization for 'tridmat[1][0]')
retarray.c:6: warning: initialization makes pointer from integer without a cast
retarray.c:6: warning: excess elements in scalar initializer
retarray.c:6: warning: (near initialization for 'tridmat[1][0]')
retarray.c:6: warning: excess elements in scalar initializer
retarray.c:6: warning: (near initialization for 'tridmat[1][0]')
retarray.c:7: warning: braces around scalar initializer
retarray.c:7: warning: (near initialization for 'tridmat[2][0]')
retarray.c:7: warning: initialization makes pointer from integer without a cast
retarray.c:7: warning: excess elements in scalar initializer
retarray.c:7: warning: (near initialization for 'tridmat[2][0]')
retarray.c:7: warning: excess elements in scalar initializer
retarray.c:7: warning: (near initialization for 'tridmat[2][0]')
bash-3.1$
Pergunta
== Douplus ==
Três questões:
1-) Por que isso dá certo?
#include <stdio.h> char **retarray(void) { static char *abra[3][10] = { { "abra", "kadabra", "alakazam" }, { "bulbasaur", "ivysaur", "venusaur" }, { "um", "dois", "tres", "quatro" } }; printf("%s\n", abra[0][0]); return abra[0]; } int main(void) { char **str; str = retarray(); printf("%s\n", str[0]); return 0; }2-) Por que isso dá errado?#include <stdio.h> int **retarray(void) { static int *tridmat[3][10] = { { { 3, 6, 9 } }, { { 12, 15, 18 } }, { { 21, 24, 27 } } }; printf("%d\n", tridmat[0][0][0]); return tridmat[0]; } int main(void) { int **tridmat; tridmat = retarray(); printf("%s\n", tridmat[0][0]); return 0; }3-) E, finalmente, por que isso dá errado?#include <stdio.h> int **retarray(void) { static int tridmat[3][3][10] = { { { 3, 6, 9 } }, { { 12, 15, 18 } }, { { 21, 24, 27 } } }; printf("%d\n", tridmat[0][0][0]); return tridmat[0]; } int main(void) { int **tridmat; tridmat = retarray(); printf("%s\n", tridmat[0][0]); return 0; }Editado por == Douplus ==Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.