Salut,
Une variable tableau coincide avec l'adresse du premier élément. Inutile de prendre son adresse pour la passer en argument d'une fonction pour en modifier les éléments :
void insertValeur( int* pos, int* val , int* tai, int tab[])
et :
insertValeur(&position , &valeur , &taille , tableau);
Ceci dit :
1 2
| taille = 5;
int tableau[taille]; |
Ceci n'est pas standard en C++. Les tableaux doivent avoir une taille connu à la compilation. Cela peut avoir l'air d'être le cas avec ton code, mais le fait que taille ne soit pas constant signifie que taille pourrait très bien changer de valeur entre temps :
1 2 3 4 5 6
| int main()
{
// Definition du tableau
int i;
int const taille = 5;
int tableau[taille]; |
Et là tu verras une belle surprise dans ton code .
Je ne comprend pas non plus le passage systématique par pointeur de tous les arguments de ta fonction : ce n'est pas pertinent dans tous les cas, voire carrément inefficace. Les types natifs (int, double, char, etc.) se passe en général plutôt par valeur lorsqu'ils n'ont pas besoin d'être modifiés dans la fonction. Lorsqu'on veut modifier un paramètre, on le passe plutôt par référence. Je ne passe des arguments par pointeurs que si la valeur nul est pertinente dans la fonction. Sinon, je privilégie systématiquement les références. Voilà le genre de signature à laquelle je me serais attendu
void insertValeur( int pos, int val , int& tai, int tab[])
voire carrément :
1 2 3 4 5 6 7 8
| namespace
{
const int taille_tableau = 5;
}
//Fonction permettant d'insérer une valeur "val" à une position "pos"
//dans un tableau "tab" de taille "tai"
void insertValeur( int pos, int val , int& tai, int tab[taille_tableau]) |
Envoyé par
Kiwii
Merci d'avance pour votre aide, je sais que je peux utiliser la classe vector et ses insert, push_front et push_back mais pourquoi faire simple lorsque l'on peut faire compliqué ?
A l'école, tu as appris la division avant d'apprendre à compter ? Ben pourquoi ce serait différent avec le C++ : apprend à bien programmer avec des vecteurs et quand tu maîtriseras un certain nombre de notions de base, alors va vers des notions plus complexes comme les pointeurs.
Partager