Tableau/pointeur passer en parametre

chahbane -  
 chah -
Bonjour,

SVP je viens de programmer une petite application en langage C. je voulais utiliser une fonction pour saisir au clavier un tableau T dynamique a une dimension de taille n dont l'en tete est :
void remplir (int* T, int n)

j'ai rencontre pls erreurs. svp me completer la fonction et ce qu'il faut avoir dans le proramme principal (malloc...) et l'appel.
mer6666666666666666666666

A voir également:

2 réponses

loupius Messages postés 789 Statut Membre 148
 
Quel mélange... un coup c'est 'int*, un coup c'est 'int[]'. Pourquoi pas mais apparemment tu ne suis pas.
A corriger (au moins):
- scanf("%d",t[i]); en &t[i] ou t+i,
- remplir(&A,n); en A.
Mais le compilateur doit le signaler !
Bonne continuation.
1
chah
 
ohhh! mer6 mer6 mer6 1000 fois.
ms a propos int[] et int*, je voudrais utiliser les deux (passage par valeur et variable) dans le mémé programme car je suis débutant en langage C et je veux savoir la différence.
Pouvez-vous m'expliquer la difference svp et quel methode est plus rapide et conseillée.
0
loupius Messages postés 789 Statut Membre 148
 
Le compilateur traitera de la même manière le passage par 'int*' que par 'int[]'; il n'y a donc pas de méthode plus rapide.
En 'C' il n'y a que la transmission par valeur qui existe. Dire que la transmission par adresse existe est une erreur, il s'agit en fait d'une transmission de la valeur... d'une adresse.
La différence entre un pointeur (int*) et un tableau (int[]) est (essentiellement) la suivante:
'int*' est un pointeur variable (au sens ou on peut modifier l'adresse vers laquelle il pointe),
'int[]' est un pointeur constant (il ne peut que pointer vers le tableau déclaré à l'initialisation).
Bonne réflexion.
0
chah
 
Mer66666666 bcp...
0
lucieb31 Messages postés 363 Statut Membre 62
 
P.e pourrai tu nous donner le code que tu avais écris pour qu'on corrige les erreurs.
0
chahbane
 
#include <stdio.h>
#include <conio.h>


void remplir (int* t, int n)
{
int i;
for (i=0; i<n; i++)
{
printf(" Donner t[%i] : ",i);
scanf("%d",t[i]);
}
}

void saisie (int* n)
{
printf("Donner la taille du tableau : ");
scanf("%d",n);
}

void affichage (int t[], int n)
{
int i;
for (i=0; i<n; i++)
printf(" %d ",t[i]);
}

int* A;

main()
{
int n;
saisie(&n);
A=malloc(n*sizeof(int));
remplir(&A,n);
affichage(A,n);
getch();
}
0