Un tableau de chaînes de pointeurs pointant vers un pointeur

Questions et réponses du rseoc 2021-12-30 03:04:52 阅读数:971

tableau cha nes pointeurs pointant

img


img

S'il vous plaît, expliquez - moipSignification du pointeur,Qu'est - ce que ça veut dire.Et dans les fonctions de définition*(p+i)Ça veut dire.Définir comment la fonction est appliquée à5Chaîne triée.




Adopter les réponses:

pPointer vers un tableau de chaînes,Ou un tableau de caractères 2D
*pValeur représentant la première adresse d'un tableau de chaînes,C'est la première chaîne
*(p + i)Ça veut direi+1Chaîne (s)



Autres réponses2:

pPointez vers la chaîne dans le tableau,C'est - à - dire plusieurs éléments
*(p+i)équivalent àp[][i]
Utilisé dans le tri des bullesscrtmpFonction comparer la chaîne,Et trier


Autres réponses3:

Voici ce que je comprends,Pas nécessairement.,Pour votre information,Comme suit:

#include <stdio.h>#include <string.h>#define LINEMAX 20int main(){ void sort(char **p); int i; char **p,*pstr[5],str[5][LINEMAX]; for(i=0;i<5;i++){ pstr[i] = str[i]; // Assigner un tableau de pointeurs à son tour comme un tableau bidimensionnel str Pointeur de ligne pour  } printf("input 5 strings:\n"); for(i=0;i<5;i++){ scanf("%s",pstr[i]); // Conservez une chaîne dans ces cinq adresses  } p = pstr; //p Assigner une valeur à ce tableau de pointeurs  sort(p); printf("\nstrings sorted:\n"); for(i=0;i<5;i++){ printf("%s\n",pstr[i]); } return 0;}void sort (char **p){ int i,j; char * temp; for(i=0;i<5;i++){ for(j=i+1;j<5;j++){ // printf("before change :*(p+i)=%s,*(p+j)=%s\n",*(p+i),*(p+j)); //p+i L'indice est i Pointeur du tableau de pointeurs pour ,*(p+i) L'indice est i La chaîne pointée par le pointeur de  //p+j L'indice est j Pointeur du tableau de pointeurs pour ,*(p+j) L'indice est j La chaîne pointée par le pointeur de  // Comparez les chaînes pointées par ces deux pointeurs , Et ensuite échanger leurs valeurs -Valeur du pointeur, Changez la valeur de l'adresse où ils stockent la chaîne  // Pour trier les chaînes  if(strcmp(*(p+i),*(p+j))>0){ temp=*(p+i); *(p+i) = *(p+j); *(p+j) = temp; } } }}
版权声明:本文为[Questions et réponses du rseoc]所创,转载请带上原文链接,感谢。 https://primo.wiki/2021/12/202112281150533241.html