Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1216 connectés 

  FORUM HardWare.fr
  Programmation
  C

  différence entre un char p[][] et un char * p[] ?

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

différence entre un char p[][] et un char * p[] ?

n°693554
push
/dev/random
Posté le 06-04-2004 à 13:32:55  profilanswer
 

voila dans mon esprit un tableau à 2 dimentions cela équivalait à faire un tableau de pointeur où j'aurais alloué de la mémoire à chaque pointeur mais apparement non ?
 
donc je penssais qu'un char p[2][3];  
 
et un char * p[2]; p[0]=malloc(3); p[1]=malloc(3);
 
était identique.
 
 :jap:


Message édité par push le 07-04-2004 à 14:10:18
mood
Publicité
Posté le 06-04-2004 à 13:32:55  profilanswer
 

n°693559
Taz
bisounours-codeur
Posté le 06-04-2004 à 13:40:12  profilanswer
 

non
 
[2][3] tu as tout contigu en mémoire {{ , , }, { , , }}
 
avec un tableau de pointeur, seuls tes pointeurs se contigus, ce qui est pointé se trouve n'importe ou

n°693562
push
/dev/random
Posté le 06-04-2004 à 13:44:18  profilanswer
 

mais dans la manipulation de l'un commme de l'autre je peux utiliser la forme p[][], alors j'ai du mal à saisir dans le code de tantot avec qsort pourquoi j'ai du modifier quelque chose dans mon strcmp  :heink:

n°693563
Taz
bisounours-codeur
Posté le 06-04-2004 à 13:46:41  profilanswer
 

bon allez, qui me colle la définition d'un tableau

n°693566
Taz
bisounours-codeur
Posté le 06-04-2004 à 13:48:04  profilanswer
 

parce que l'un est contigu, l'autre nécessite un dereferencement

n°693568
push
/dev/random
Posté le 06-04-2004 à 13:50:05  profilanswer
 

sans vouloir abuser taz, tu pourrais me dire plus clairement se que tu veux dire par contigu et dereferencement  :whistle:

n°693570
Taz
bisounours-codeur
Posté le 06-04-2004 à 13:52:27  profilanswer
 

ben contigü et dereferencer, ben *pointeur

n°693604
push
/dev/random
Posté le 06-04-2004 à 14:12:11  profilanswer
 

Code :
  1. void qsort(void *base, size_t nmemb, size_t size,
  2.                   int(*compar)(const void *, const void *));


 

Code :
  1. int strcmp(const char *s1, const char *s2);


 
qsort à besoin de 4 arguments, 1 void *, le nombre d'éléments, la taille d'un de ces éléments et une fonction de comparaison qui prendra 2 void* en arguments.
 
et strcmp lui prend 2 char* en argument et renvoit un entier.
 
pas d'incohérence dans se que je dis jusqu'ici ?

n°693609
Taz
bisounours-codeur
Posté le 06-04-2004 à 14:17:34  profilanswer
 

ben ça c'est la documentation ... d'autres platitudes à dire ?

n°693613
push
/dev/random
Posté le 06-04-2004 à 14:22:35  profilanswer
 

platitude.. lol
 
enfait se que je ne saisi pas c'est l'écriture  
 
strncmp(*(char**)a, *(char**)b); dans le cas du tris d'un tableau de pointeur.
 
et strncmp((char*)a, (char*)b); dans le cas du tris d'un [][]

mood
Publicité
Posté le 06-04-2004 à 14:22:35  profilanswer
 

n°693618
Taz
bisounours-codeur
Posté le 06-04-2004 à 14:26:40  profilanswer
 

déjà y a pas de n
déjà on elève pas les const comme ça
 
après, c'est juste une histoire de types [:spamafote]

n°693633
push
/dev/random
Posté le 06-04-2004 à 14:36:43  profilanswer
 

oups oui pour le n,  
 
je pensse que le problème c'est que j'interprète mal *(char**)a ou meme (char*)a  
 
c'est serait pas un typage par hasard parcequ'a la base a était un void* ?

n°693646
Taz
bisounours-codeur
Posté le 06-04-2004 à 14:41:17  profilanswer
 

ben c'est un cast ...

n°693686
push
/dev/random
Posté le 06-04-2004 à 14:55:02  profilanswer
 

mmm ok...
 
donc...
 
dans le premier cas a est un pointeur de pointeur de char et strcmp compare se qu'il pointe donc un pointeur de char.
 
et dans le second cas a est un pointeur de char et strcmp compare ce pointeur de char donc c logique...
 
(correction)
 


Message édité par push le 06-04-2004 à 14:56:23
n°693692
push
/dev/random
Posté le 06-04-2004 à 14:58:40  profilanswer
 

se qui me ramène au problème de base *(char **) a ce n'est pas la meme chose que (char *)a et je vois pas la diff pff

n°693696
Taz
bisounours-codeur
Posté le 06-04-2004 à 15:00:05  profilanswer
 

ben parce que le void* permet une certain généricité, en gros ça pointe vers n'importe quoi : à toi de savoir ce que c'est vraiment et comment t'en servir

n°693749
push
/dev/random
Posté le 06-04-2004 à 15:33:10  profilanswer
 

si a est un char ** et que je fais une comparaison sur *a
 
ou que a soit un char * et que je face la comparaison sur a
 
je vois pas de différence, ya quelque chose qui m'échappe la.

n°693753
Taz
bisounours-codeur
Posté le 06-04-2004 à 15:35:07  profilanswer
 

ben ton dernier message est clairement l'explication

n°693773
push
/dev/random
Posté le 06-04-2004 à 15:42:41  profilanswer
 

si tu le dis  :D  
 
mais pq c'est 2 écritures differentes dans le cas du p[][] et *p[]  :??:

n°693776
Taz
bisounours-codeur
Posté le 06-04-2004 à 15:46:10  profilanswer
 

parce que c'est pas la même chose ... tu le fais exprès ou quoi?

n°693796
push
/dev/random
Posté le 06-04-2004 à 15:54:02  profilanswer
 

non même pas  :sweat:  
 
"parce que l'un est contigu, l'autre nécessite un dereferencement"
 
j'ai aucune idée de se que ca peut signifier et encore moin de l'effet que ca à sur mes écritures dans mon strcmp.
 
merci de ta patience sinon  :whistle:

n°693802
Taz
bisounours-codeur
Posté le 06-04-2004 à 15:56:33  profilanswer
 

le français sinon ?  
 

Taz a écrit :

bon allez, qui me colle la définition d'un tableau?

t'es aussi visé, une petite recherche ...
 

Taz a écrit a écrit :

ben contigü et dereferencer, ben *pointeur




Message édité par Taz le 06-04-2004 à 15:56:50
n°693804
jagstang
Pa Capona ಠ_ಠ
Posté le 06-04-2004 à 15:56:55  profilanswer
 

Avec un déréférencement le tri sera plus long. si les éléments sont contigus, ça sera plus rapide en mémoire donc à trier

n°693806
Taz
bisounours-codeur
Posté le 06-04-2004 à 15:58:06  profilanswer
 

JagStang a écrit :

Avec un déréférencement le tri sera plus long. si les éléments sont contigus, ça sera plus rapide en mémoire donc à trier

ouais, là tu nous fait de la bonne parano

n°693809
jagstang
Pa Capona ಠ_ಠ
Posté le 06-04-2004 à 15:59:31  profilanswer
 

ta gueule :o
 
edit : :D


Message édité par jagstang le 06-04-2004 à 15:59:57
n°693812
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:01:03  profilanswer
 

t'as oublié que ça gaché la mémoire de manière inacceptable aussi

n°693840
push
/dev/random
Posté le 06-04-2004 à 16:14:11  profilanswer
 

bein un tableau p[i] ca équivaut à *(p+i)
 
je vois pas trop se que je pourrais découvrire sur les tableaux, je vais revoir ca mais bon  :heink:

n°693843
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:15:55  profilanswer
 

ben ça c'est juste une histoire de notation ... je vois pas ce que tu conclus

n°693845
jagstang
Pa Capona ಠ_ಠ
Posté le 06-04-2004 à 16:19:02  profilanswer
 

push>> où sont stocké les données de ton tableau, pour chaque notation
 
p[][]
et  
*p[]
et
**p

n°693847
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:20:13  profilanswer
 

compter pas sur moi pour recoller ma définition un peu complète d'un tableau, c'est pas à moi de faire les recherches, c'est à ceux qui posent les questions [:spamafote]

n°693848
push
/dev/random
Posté le 06-04-2004 à 16:20:32  profilanswer
 

bein je conclus rien  :D  
 
j'essayais juste de trouver des pistes pour différencier p[][] et p*[]
 
enfin je vais continuer sur la piste "qu'est-ce qu'un tableau" alors.

n°693856
jagstang
Pa Capona ಠ_ಠ
Posté le 06-04-2004 à 16:24:25  profilanswer
 
n°693857
jagstang
Pa Capona ಠ_ಠ
Posté le 06-04-2004 à 16:26:04  profilanswer
 
n°693858
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:26:07  profilanswer
 

me dis pas qu'il faudrait écrire une FAQ ...

n°693862
push
/dev/random
Posté le 06-04-2004 à 16:30:22  profilanswer
 

JagStang a écrit :

push>> où sont stocké les données de ton tableau, pour chaque notation
 
p[][]
et  
*p[]
et
**p
 


 
en mémoire  :lol:  
 
non aller  :cry:  
 
hum, quand on créer un tableaui p[][] on définis d'une manière ou d'une autre sa taille, il aura de de la mémoire alloué pour ca, apres p*[] un tableau de pointeur bein c la même chose non ? on définis la taille de chaque pointeur si on veut mettre des données dedans.
 
enfin c bien confus quoi ces pointeurs enfait  :sarcastic:  

n°693863
push
/dev/random
Posté le 06-04-2004 à 16:30:44  profilanswer
 

je vais voir tes liens

n°693866
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:32:29  profilanswer
 

j'aime bien t'as façon de penser ... c'est la même chose pourtant tu les définis pas pareil ...

n°693868
drasche
Posté le 06-04-2004 à 16:32:42  profilanswer
 

Taz a écrit :

me dis pas qu'il faudrait écrire une FAQ ...


tu pourrais écrire un bouquin [:cupra] [:ddr555]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°693876
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:37:34  profilanswer
 

chiche, si je trouve pas de travail cet été ... je pourrais faire un petit essai

n°693882
jagstang
Pa Capona ಠ_ಠ
Posté le 06-04-2004 à 16:40:52  profilanswer
 

push a écrit :


en mémoire  :lol:  


>> oui mais encore, précise
 

push a écrit :


enfin c bien confus quoi ces pointeurs enfait  :sarcastic:  


Faute avouée à moitié pardonée :)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  différence entre un char p[][] et un char * p[] ?

 

Sujets relatifs
Différence entre chaques languages de programmation ?Pb : "cannot convert char[2] to char, il m'écrit le code ASCII...
de char** à void**conversion string -> char *
probleme pointeur void alors qu'un cast de char* marche :\fonction char -> bool
[PHP Mysql] probleme pour avoir la difference entre 2 dates.[OpenGL] difference (newbie)
[DEBUTANT]Problème avec const char[C] Question sur strtol (conversion de char* en int)
Plus de sujets relatifs à : différence entre un char p[][] et un char * p[] ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR