begin process at 2012 05 29 13:52:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Les pointeurs


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Les pointeurs

vendredi 12 mai 2006 à 19:41:37 | Les pointeurs

darkwhite

Salut a tous je debute le C et j'aimerais qu'on m'explique l'interet des pointeurs (clairement si possible).
vendredi 12 mai 2006 à 19:57:58 | Re : Les pointeurs

BruNews

Administrateur CodeS-SourceS
Accès à une zone (adresse dans la) mémoire.

ciao...
BruNews, MVP VC++
vendredi 12 mai 2006 à 23:05:00 | Re : Les pointeurs

rrk275

Les pointeurs sont tres utiles, surtout lorsque tu as de grosses variables , tu veux faire une fonction qui recupere une valeur
que l'utilisateur tape pour ca il faut qu'il remplisse l'adresse de ta variable..

pour ne pas le citer scanf..

int b;
scanf("%d",&b);//ne pas oublier le & !
//c'est quand meme pratique
en gros c'est avoir acces à une variable en mode écriture de n'importe ou..

void ajoute_un(int * b)
{
(*b)++;
}

samedi 13 mai 2006 à 00:21:02 | Re : Les pointeurs

Guilou34

Salut à toutes et à tous.

Les pointeurs sont particulièrement utiles lorsqu’il s’agit de transmettre ,par  exemple,  un tableau à une fonction . S’ils n’existaient  pas, il faudrait  recopier tous ses éléments  dans la pile au risque de  saturer celle-ci avec en plus une perte de temps qui peut ne pas être négligeable.

 En transférant l’adresse du  premier élément,  c’est à dire  son pointeur , on gagne beaucoup en efficacité. C’est d’ailleurs ce que le compilateur réalise par défaut : si dans l’appel d’une fonction il trouve un argument de la forme  tableau [ ]  , c’est l’adresse du premier élément de tableau qui sera placé sur la pile. Bien entendu cela suppose que dans la définition de la fonction  se trouve dans la liste des arguments et à la même place  un paramètre de même type.

Mais c’est aussi une particularité héritée du C que de pouvoir accéder  aussi facilement  en C++ au  " contenant  et au contenu ". C’est ainsi que dans le corps même d’une fonction, il peut être indispensable de manipuler des pointeurs plutôt que  des variables lorsqu’on doit travailler en temps réel par exemple.

 

Cela étant on peut se demander si ce forum est le meilleur endroit pour poser ce genre de questions alors qu’il existe toute une littérature et de tous les niveaux où l’on peut trouver toutes les explications et toutes les réponses souhaitées.

 C’est pourquoi je propose aux lecteurs de ce forum cette question : Quel est le meilleur tutorial du C++ pour celui ou celle, jeune ou moins jeune , qui,  n’ayant  pas accès ou ne pouvant  suivre un cours public, souhaite néanmoins se familiariser avec ce langage ? Pour ma part je ne dispose que des ouvrages en anglais.

 Pourquoi alors, si l’on pouvait tomber d’accord sur tel ou tel bouquin, ne pas ouvrir un Forum consacré aux questions bien ciblées  du genre : page 24 je ne parviens pas à comprendre le sens de tel paragraphe dans tel ouvrage ?

 Avec l'espoir d'être entendu.

 .


 

samedi 13 mai 2006 à 00:22:59 | Re : Les pointeurs

rrk275

Les pointeurs sont particulièrement utiles lorsqu’il s’agit de transmettre ,par  exemple,  un tableau à une fonction . S’ils n’existaient  pas, il faudrait  recopier tous ses éléments  dans la pile au risque de  saturer celle-ci avec en plus une perte de temps qui peut ne pas être négligeable.

C'est aussi que tout n'est pas possible sans les pointeurs..

samedi 13 mai 2006 à 00:27:46 | Re : Les pointeurs

BruNews

Administrateur CodeS-SourceS
pointeur (adresse) au lieu de variable (valeur directe), dépend seulement si ça convient au problème traité mais manipuler un pointeur ne donne aucune efficacité particulière, si on n'a pas besoin de l'adresse c'est au contraire contre productif.

ciao...
BruNews, MVP VC++
samedi 13 mai 2006 à 09:10:42 | Re : Les pointeurs

nightlord666

Membre Club
Passage d'un tableau de 100000 int par valeur : 400000 octets
Passage de ce même tableau par pointeur : 4 octets.

On se rend vite compte de la différence...
samedi 13 mai 2006 à 10:02:59 | Re : Les pointeurs

BruNews

Administrateur CodeS-SourceS
Me semblait avoir écrit en bon français pourtant: "SI on n'a pas besoin de l'adresse ...."
en réponse à Guilou34 dans son 3eme paragraphe.

ciao...
BruNews, MVP VC++
dimanche 14 mai 2006 à 00:43:59 | Re : Les pointeurs

BruNews

Administrateur CodeS-SourceS
Désolé mais il y a méprise, je dois donc clarifier:

Quand je dis "en bon français", là c'est pour nightlord qui nous fait le compte des octets qui iraient sur la pile alors que valeur directe plutôt que pointeur (msg de 00:27:46) était en réponse de Guilou34 (msg de 00:21:02). J'avais fait un condensé pas forcément compréhensible.

ciao...
BruNews, MVP VC++
dimanche 14 mai 2006 à 01:52:01 | Re : Les pointeurs

Hylvenir

Salut,
pour revenir sur l'argument de l'intéret des pointeurs pour les grands tableaux.
Essayer ça juste pour voir :
#include <stdio.h>
#include <stdlib.h>

void fct( int t[10000] ) { int i; 
printf( "sizeof %d\n", sizeof( t ) ); // affiche 4 ou 8, ça sent le pointeur
for ( i = 0; i < 4; ++i )   t[i] *= 2;
}

int main(int argc, char *argv[])
{
  int t[10000] = { 1, 2, 3, 4 };
  int i = 0;
  for ( i = 0; i < 4; ++i ) printf( "[%d]", t[i]);  printf("\n" );
 
  fct( t );

  for ( i = 0; i < 4; ++i ) printf( "[%d]", t[i]);  printf("\n" );
  // le tableau est modifié ce qui laisse présentir un passage par adresse ou référence)

  system("PAUSE");   
  return 0;
}

En gros, les tableaux ne semblent (sont?) pas copiés lors des appels de fonction
mais castés automatiquement en C sans que le programmeur n'ait à le faire.
Il n'y doit y avoir aucune différent entre
void fct( int t[10000] ) { int i;  for ( i = 0; i < 4; ++i )   t[i] *= 2; }
et
void fct( int* t ) { int i;  for ( i = 0; i < 4; ++i )   t[i] *= 2; }
(un spécialiste en ASM pourra confirmer en regardant le code)

L'intéret des pointeurs est résumé ici : http://c-faq.com/ptrs/goodfor.html

  • allocation de mémoire (tableaux)
  • accès générique à des variables de même type
  • (simuler) le passage par référence pour les fonctions ( le C passe tout par valeur)
  • malloc'é des structures quelconque (arbres et listes liées)
  • parcourir un tableau (une chaîne par exemple)
  • copier efficacement les tableaux et structures par référence (particulièrement pour les paramètres de fonctions)
Remarquer le dernier point m'intrigue puisqu'il ne semble pas être valable pour les tableaux (mais au moins pour les structures).



// Ma participation à la saturation du net: http://hylvenir.free.fr

1 2

Cette discussion est classée dans : pointeurs


Répondre à ce message

Sujets en rapport avec ce message

PROBLEME POINTEURS [ par zeloveur ] char * saisirChaine(){ int i=0; char *chn; chn=(char *)malloc(sizeof(char)); do { chn[i]=getchar(); chn=(char *)realloc(chn,(++i+1)*sizeof(char)); } Structures, pointeurs, malloc et realloc reunis !! :) [ par mindark ] Alors la, je suis completement coulé !Voila mon probleme :J'ai une tableau "grid" qui est un tableau de structures "cell" :struct cell {bool bloquant; Pointeurs... [ par thebigbang ] salut à vous tous...QQ1 pourrait-il me préciser l'utilisations des pointeurs en C/C++ ?Parce que j'ai lu des bouquins et je comprends la déclaration, Pointeurs... [ par thebigbang ] salut à vous tous...QQ1 pourrait-il me préciser l'utilisations des pointeurs en C/C++ ?Parce que j'ai lu des bouquins et je comprends la déclaration, Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ] J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char probleme avec pointeurs (urgent) [ par legrosnul ] legrosnul:)Salut a tous! voici le mini programme suivant en c.(Fonction):void bidon (int *a, int *b, int *c) {*c=*a;*c=*c+b;}main() {int x,y,z;x=10;y= problême de pointeurs (urgent) 2 [ par legrosnul ] legrosnul:) toujours aussi nul!!:)Merci Beuss pour m'avoir repondu.Cela dit ta reponse m'étonne car c'est un bout du programme qui m'a été donné a l'e pointeurs et fonctions [ par alfred289 ] Pointeurs sur membres [ par littlefl ] Bonjour,Quelqu'un pourrait-il me donner un ca soù il serait intéressant d'employer les pointeurs sur membres? POINTEURS sur pointeurs [ par ledeveloppeurfou ] Voila je suis en train de construire une aplication pour une jeu de role, et je suis bloqué. Il me faudrait acceder à des pointeurs en employant de pr


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales