appel de la fonction et de la fonction prototype en c avec un tableau 2d paramètre
void setup_map (int *map); <--- prototype
int row, col; <-- global variables
some main
{
//get number of rows and cols from user
int map[rows][cols]; //create map here because another function uses it
setup_map (map[row][col]);
}
void setup_map (int map[row][col])
{
loop through and set up map
}
mon problème est que je ne peux pas obtenir le prototype tout à fait raison, j'espérais quelque part pourrait m'expliquer ce que mon prototype doit être? Je viens de commencer à apprendre sur les pointeurs et comprendre le concept assez bien n'en avez pas déjà utilisé un tableau 2d comme un argument. Merci pour toute aide.
double possible de passant de la 2d tableaux
Le lien au passage de tableau 2d eu une réponse qui m'a vraiment aidé. Il s'avère que j'ai besoin d'utiliser malloc pour allouer dynamiquement de mon tableau et être en mesure de passer à une fonction. Merci à tous pour l'aide!
Le lien au passage de tableau 2d eu une réponse qui m'a vraiment aidé. Il s'avère que j'ai besoin d'utiliser malloc pour allouer dynamiquement de mon tableau et être en mesure de passer à une fonction. Merci à tous pour l'aide!
OriginalL'auteur D_Man | 2013-02-26
Vous devez vous connecter pour publier un commentaire.
Corriger prototypes comprennent:
Et de l'appeler:
Noter que, toutefois, que le nombre de lignes et de colonnes doit être une constante de compilation pour que cela fonctionne.
Donc, il y a un moyen que je pouvais encore obtenir le nombre de lignes et de colonnes de l'utilisateur? Faire un pointeur vers le tableau 2d et passez le pointeur peut-être?
Merci, ajoute-il.
Vous devrez utiliser l'allocation dynamique de la mémoire.
OriginalL'auteur
Il y a plusieurs choses mal.
Première chose de mal, vous appelez votre fonction dans la mauvaise manière.
Vous ne devez pas appeler
setup_map (map[row][col]);
au lieu de cela, vous devez appelersetup_map (map);
parce que le nom de tableau est un pointeur, le nom du tableau plus [] de l'opérateur récupère le contenu d'un endroit particulier sur la mémoire.Alors vous avez besoin pour faire de votre prototype et votre définition de regarder la même chose, parce que le compilateur utilisera le prototype (pas la définition, si elle est postérieure) pour analyser si votre code est correct, et se terminera mal, si votre prototype est faux.
Maintenant sur le prototype:
Si vous avez VRAIMENT besoin de votre fonction de s'attendre à un tableau de taille fixe, alors vous devez utiliser la compilation des constantes de temps.
Comme ceci:
void setup_map( int map[23][9]);
ou ceci:
Rappelez-vous que le nom du tableau est un pointeur.
OriginalL'auteur speeder
heres un exemple
OriginalL'auteur Dmitry
vous avez à donner des valeurs entières alors que declearing un tableau dans la façon dont vous le faites.
tels que:
si vous souhaitez donner à ces valeurs que le rang et le col, vous devez d'abord définir des macros pour la ligne et des cols.
macros:
déclaration dans main():
si vous envisagez de prendre la ligne et le col des valeurs de l'utilisateur, les choses peuvent devenir un peu compliqué parce que vous avez à faire, allocation dynamique de la mémoire en utilisant la fonction malloc() et free ().
exemple de prototype de fonction:
tout en faisant fonction de la mise en œuvre utilisation de votre prototype de fonction. juste ajouter des accolades et de commencer à remplir.
OriginalL'auteur mirac baver ozturk