Pointeur de chaîne en c

Pointeur de chaîne en c
Une chaîne n'est rien d'autre qu'un tableau de caractères qui contient tous les types de caractères de valeurs de type de données. Grâce à la chaîne, nous pouvons accéder à n'importe quel caractère avec son index non. de manière très rapide. Aujourd'hui, notre sujet est que nous pouvons accéder à la chaîne via un pointeur. Il s'appelle un pointeur de chaîne. Nous expliquerons comment le pointeur nous aidera à accéder à tout l'index d'une chaîne.

Accéder à la chaîne via le pointeur

Pointeur de charbon:

  • La chaîne est stockée dans un tableau char.
  • Char S [10] = "Computer",
  • Le pointeur de charbon peut pointer vers le bloc charbon.
  • Char * p; p = & s [0], p + 1 = 1001, il représente l'adresse du bloc suivant.

* (p + i) = s []

Explication

Dans le diagramme ci-dessus, supposons que nous dessinons un pointeur qui est un caractère en type et déclarons une chaîne dont l'adresse de base est 1001. Ainsi, l'adresse du bloc suivant est 1002. Parce que chaque valeur de type de caractère contient 1 octet dans la mémoire, si l'adresse de base du 1St Le bloc est 1001, donc l'adresse du bloc suivant doit être 1002 et ainsi de suite. Maintenant, Pointer P détient l'adresse du 1St le bloc signifie l'adresse de base de cette chaîne particulière. Cela signifie que la valeur d'un pointeur est 1001. Grâce à cette adresse de base, nous pouvons accéder facilement à tous les éléments de la chaîne.

String Constante

  • String littéral = String constante // String
  • Printf («ordinateur»); [que nous écrivons dans «« C'est appelé String constante, ou littéral ou chaîne]
  • Char s [10] = «ordinateur»;
  • Printf (s); Écriture unique signifie qu'il représente l'adresse du premier bloc du tableau S []. Cela signifie ici que nous passons 1000as une adresse du premier bloc de tableau [].
  • Strlen (s); Nous passons l'adresse du premier bloc de tableau S [].
  • Strlen (& s [0]) = strlen (s) = strlen («ordinateur»);

Exemple 1

Dans cet exemple, nous pouvons voir à travers le pointeur que nous pouvons calculer la longueur totale de la chaîne.

#inclure
Longueur int (char * p)

int count = 0;
tandis que (* p != '\ 0')

Count ++;
p ++;

Return Count;

int main ()

Char Str [100]; // déclarant une chaîne.
int l;
printf ("\ n Entrez n'importe quelle chaîne:");
obtient (str);
l = longueur (str); // longueur de la chaîne.
printf ("\ n la longueur de la chaîne donnée:% d \ n", l);
retour 0;

Sortir

Explication

Ici, nous définissons un nom de fonction longueur (). Dans cette fonction, nous utilisons une boucle de temps où une condition est donnée que la boucle ne sera pas terminée avant le pointeur * P peut accéder à tous les éléments de la chaîne. Dans la fonction Main (), nous déclarons une chaîne nommée STR [] pour prendre une chaîne de l'utilisateur. Maintenant, nous passons la chaîne à l'intérieur de la parenthèse de la fonction de longueur () pour calculer la longueur de la chaîne.

Exemple-2

Ici, nous verrons à travers le pointeur, nous pouvons inverser une chaîne.

#inclure
vide inverse (char [], int, int);
int main ()

Char Str [100], temp; // déclarant une chaîne.
int i, J, Len;
printf ("\ n Veuillez saisir n'importe quelle chaîne:");
obtient (str);
len = strlen (str);
Inverse (str, 0, len - 1); // inversion de la chaîne.
printf ("\ n String après reversing =% s \ n", str);
retour 0;

void inverse (char str [], int i, int len)

Char Temp;
temp = str [i];
Str [i] = str [len - i];
Str [len - i] = temp;
si (i == len / 2)

retour ;

inversé (str, i + 1, len);

Sortir

Explication

Ici à l'intérieur de la fonction principale (), nous déclarons une chaîne nommée Str [] et prenons une chaîne de l'utilisateur à l'aide de la fonction get (), sauf que nous définissons une fonction nommée inverse () Pour inverser la chaîne via un pointeur qui peut accéder aux valeurs de Str [].

Exemple-3

Ici, nous verrons à travers le pointeur, nous pouvons copier une chaîne.

#inclure
/ * Fonction Prototype * /
Copie void (char S2 [30], char S1 [30]);
/* Fonction principale */
int main ()

char S1 [30], S2 [30];
int i;
printf ("Entrée String: \ n");
obtient (S1);
copie (S2, S1);
printf ("Copied String est:% s \ n", s2);
retour 0;

/ * Définition de la fonction * /
Copie void (char S2 [30], char S1 [30])

int i;
pour (i = 0; s1 [i] != '\ 0'; i ++)

s2 [i] = s1 [i];

S2 [i] = '\ 0';

Sortir

Explication

Ici à l'intérieur de la fonction principale (), nous déclarons deux chaînes nommées S1 [] et S2 [] et prenons une chaîne de l'utilisateur à l'aide de la fonction get () dans la chaîne S1 []. Sauf que nous définissons une fonction nommée copie () Pour copier la chaîne de S1 [] en chaîne S2 [] via un pointeur qui peut accéder aux valeurs de la chaîne S1 [].

Exemple-4

Ici, nous verrons à travers le pointeur que nous pouvons comparer une chaîne à une autre chaîne.

#inclure
// fonction qui compare les deux chaînes
Comparties de void (char * x, char * y)

int flag = 0;
// itérera une boucle jusqu'à la fin
// des deux cordes
tandis que (* x != '\ 0' || * Y != '\ 0')
if (* x == * y)
x ++;
y ++;

// Si deux caractères ne sont pas les mêmes
// imprime la différence et la sortie
else if ((* x == '\ 0' && * y != '\ 0')
|| (*X != '\ 0' && * y == '\ 0')
|| *X != * y)
drapeau = 1;
printf ("chaînes inégales \ n");
casser ;


// Si deux cordes sont exactement les mêmes
if (flag == 0)
printf ("Egal Strings \ n");


// code de pilote
int main ()

// donné des chaînes S1 et S2
char s1 [20] = "python";
char s2 [20] = "dsa";
// appel de fonction
les comparaisons (S1, S2);
retour 0;

Sortir

Explication

Ici à l'intérieur de la fonction principale (), nous déclarons deux chaînes nommées S1 [] et S2 []. Dans S1 [], nous attribuons une valeur nommée «python" et dans S2 [] nommé «DSA. " Sauf que nous définissons une fonction nommée comparer () Pour comparer la chaîne de S1 [] et la chaîne de S2 [] via le pointeur qui peut accéder aux valeurs de la chaîne S1 [] et de la chaîne S2 [] pour comparer les deux chaînes les unes aux autres. Comme deux chaînes sont différentes ici, donc la sortie de la chaîne est un chaîne inégale.

Conclusion

Dans ce sujet, nous avons couvert tous les aspects du pointeur de cordes très sérieusement pour comprendre le concept du pointeur de chaîne. Il est très compréhensible que via un pointeur, nous pouvons facilement accéder à l'index entier de la chaîne très rapide et facile de rendre le code robuste.