Comme le sujet l'indique, existe-t-il une différence entre:
? si oui laquelle?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char (*address)[2] //et char* address[2]
Comme le sujet l'indique, existe-t-il une différence entre:
? si oui laquelle?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char (*address)[2] //et char* address[2]
Oui il sont différent, le premier est un pointeur sun un tableau de 2 charactères (ou si tu préfère, *address est un tableau de 2 charactères), et le second est un tableau de 2 pointeur sur des charactères (ou si tu préfère un tableau de deux char*).
Okay et si je veux un tableau de pointeurs sur des chars de taille LENGTH, je fais quoi?
(c'est à dire sur des chaines de caractères dont je connais la longueur)...
J'ai pas le choix du format... Je dois stocker dans un tableau des char* de longueurs connues...
On me donne ça comme exemple mais j'ai un peu du mal à comprendre:
Theoriquement, addresses doit contenir (au plus maxCount) char* de taille ADDRESS_LEN chacun... Est-ce que tout ça est juste?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #define ADDRESS_LEN 32 //... char (*addresses)[ADDRESS_LEN]; addresses = (char (*)[ADDRESS_LEN])malloc(sizeof(char)*ADDRESS_LEN*maxCount); //et je le passe ensuite à une fonction comme cela int pBinarySearch(char *sortedData, char *keyword, char (*addresses)[ADDRESS_LEN], int maxCount) { vector <char*> keys; //... addresses[current_count++] = keys.at(mid);//me dit que "expression must be a modifiable lvalue" //... }
Je réitère, en quoi un tableau bidimensionnel (ou un tableau de tableau si tu le souhaites vraiment) ne convient-il pas ?
Dans le code que tu donnes pour la fonction pBinarySearch(), addresses a simplement besoin d'être un tableau de char*, ce n'est pas lui qui gère la mémoire des éléments pointés par tes char* (puisqu'il existe avant lui). A moins que tu souhaites copier le contenu de la mémoire pointée par ces char* dans addresses et pas seulement leur adresse, mais dans ce cas la ligne addresses[current_count++] = keys.at(mid); est fausse.
Bref, que cherches-tu précisément à faire ?
PS : au passage, on est ici sur le forum C++ pas C.
Partager