Comment feriez-vous pour déclarer un tableau à deux dimensions des pointeurs en C?
...sans l'aide de typedef.
Mon patron affirme qu'il a été demandé une fois dans une interview, et quand il a donné sa réponse que les enquêteurs lui a dit qu'il ne pouvait pas utiliser les typedefs parce que c'était le style pauvres.
Peu importe, il aime à jeter à la question à des gens juste pour voir si ils peuvent l'obtenir droite , habituellement à nouveau programmeur repas. Personne n'a jamais obtient droit (surtout sans un papier et un crayon ou ordinateur à portée de main). Je veux être prêt la prochaine fois qu'il essaie de la souche quelqu'un avec elle >:D
int * array[10][10];
Donc, depuis quand sont les typedefs mauvais style? Je veux voir les noms des personnes qui étaient responsables de cette idée sur mon bureau d'ici demain.
avakar est ... simplement, je ne comprends pas le point de cette question. Peut-être que ça fait+ de 10 ans depuis votre patron fait programmé en C, et il faiblement, rappelez-vous que c'est difficile? Ou est-il une partie de la "défi" que vous avez oublié d'inclure?
typedefs ne peut pas être de l'avant-déclaré. Ce n'est pas vraiment un problème en C, en général, mais c'est en C++. C'est mauvais pour la modularisation.
J'ai enfin compris; il demande à un tableau de pointeur vers un tableau de pointeur vers quelque chose: T *(*a[N])[M]. Voir ma réponse ci-dessous pour les variations sur le thème.
OriginalL'auteur Alex | 2009-07-16
Vous devez vous connecter pour publier un commentaire.
Vous donnera un tableau 2D de nulle pointeurs. Je ne suis pas sûr de ce qui est source de confusion à ce sujet, à moins que j'ai mal compris votre question.
OriginalL'auteur Falaina
2D tableau de pointeurs vers quoi?
Si nous parlons de pointeurs vers des tableaux 2D, puis les choses seulement obtenir un peu plus intéressant:
Edit: attendez, je crois que j'ai peut-être obtenir ce que vous êtes après.
Edit: Maintenant, nous obtenons vraiment idiot:
Et pour les pathologiquement fou:
Typedefs sont pour wusses.
Jusqu'à droit de vote de ce purement pour la citation ci-dessus.
OriginalL'auteur John Bode
Et il ya go. Vous pouvez maintenant accéder au tableau en allant p2DArray[n][m] et pour aller au void* qui y sont stockées.
Ne vois pas pourquoi vous auriez besoin d'utiliser des typedefs de toute façon ...
Edit: hahahaha ou ce avakar suggéré 😉
Vous ne devriez jamais jeté le retour de malloc? Donc vous ne pouvez pas allouer rien d'autre que void*, ce qui est inutile en soi?
Nah char* pChar = malloc( 1 ); le code est valide si je me souviens bien. Je ne me souviens qu'il y ait préjudice au casting le retour de malloc ... mais je ne l'utilisation de C++ plus de C.
Le mal est que si vous oubliez d'inclure la définition de la fonction malloc(), la fonte permet de masquer votre erreur. Car il ne sert pas...
void les pointeurs sont implicitement converti en un autre objet de type pointeur, sans la nécessité pour un casting. T x = malloc(sizeof *x * num_elements); est idiomatiques C. Avant C89 malloc() a retourné char, un casting a été nécessaire, mais pas beaucoup d'entre nous travaillent sur 20 ans de mise en œuvre.
OriginalL'auteur Goz
Principaux des lignes en C/C++, colonne majeur dans Matlab/Fortran et pour une raison inconnue, C#/native de l'interopérabilité avec les tableaux multidimensionnels.
OriginalL'auteur Sam Harwell
La chose au sujet des typedefs et des pointeurs de fonction, c'est qu'il easifies la souche mentale de programmeurs.
Je crois que le problème vient de là, à l'aide de pointeurs void résoudrait ce, bien que vous auriez à jeter le pc à chaque fois que vous l'utilisez pour vous débarrasser de tous les avertissements.
OriginalL'auteur Tobias Wärre