Puntatore della stringa in C

Puntatore della stringa in C
Una stringa non è altro che un array di caratteri che contiene tutti i tipi di caratteri di valori del tipo di dati. Attraverso la stringa, possiamo accedere a qualsiasi carattere con il suo indice no. in modo molto veloce. Oggi il nostro argomento è che possiamo accedere alla stringa tramite un puntatore. Si chiama A Puntatore di stringa. Spiegheremo come il puntatore ci aiuterà ad accedere a tutto l'indice di una stringa.

Accesso alla stringa tramite puntatore

Puntatore Char:

  • La stringa è memorizzata in un array di carbone.
  • Char s [10] = "computer",
  • Il puntatore Char può indicare il blocco Char.
  • Char *p; p = & s [0], p+1 = 1001, rappresenta l'indirizzo del blocco successivo.

*(p+i) = s []

Spiegazione

Nel diagramma sopra, supponiamo che disegniamo un puntatore che è un carattere in tipo e dichiara una stringa il cui indirizzo di base è 1001. Quindi l'indirizzo del blocco successivo è 1002. Perché ogni valore del tipo di carattere contiene 1 byte nella memoria, se l'indirizzo di base di 1st Il blocco è 1001, quindi l'indirizzo del blocco successivo deve essere 1002 e così via. Ora, il puntatore P detiene l'indirizzo del 1st blocco significa l'indirizzo di base di quella particolare stringa. Significa che il valore di un puntatore è 1001. Attraverso questo indirizzo di base, possiamo accedere facilmente a tutti gli elementi della stringa.

Costante di stringa

  • String Literal = String costante // String
  • Printf ("computer"); [che scriviamo in "" che si chiama stringa costante o letterale o stringa]
  • Char s [10] = "computer";
  • Printf (s); Solo Scrivi S significa che rappresenta l'indirizzo del primo blocco dell'array S []. Significa che qui passiamo 1000A un indirizzo del primo blocco di array s [].
  • Strlen (s); Passiamo l'indirizzo del primo blocco di array s [].
  • Strlen (& s [0]) = strlen (s) = strlen ("computer");

Esempio 1

In questo esempio, possiamo vedere attraverso il puntatore che possiamo calcolare la lunghezza totale della stringa.

#includere
int lunghezza (char *p)

int count = 0;
mentre ( *P != '\ 0')

conta ++;
p ++;

Conteggio di ritorno;

int main ()

Char Str [100]; // dichiarando una stringa.
int l;
printf ("\ n immettere qualsiasi stringa:");
ottiene (str);
l = lunghezza (str); // lunghezza della stringa.
printf ("\ n la lunghezza della stringa data: %d \ n", l);
restituzione 0;

Produzione

Spiegazione

Qui definiamo i nomi delle funzioni lunghezza (). In questa funzione, utilizziamo un ciclo while in cui viene data una condizione che il ciclo non verrà terminato fino al puntatore *P può accedere a tutti gli elementi della stringa. Nella funzione principale (), dichiariamo una stringa denominata str [] per prendere una stringa dall'utente. Ora passiamo la stringa all'interno della parentesi della funzione di lunghezza () per calcolare la lunghezza della stringa.

Esempio-2

Qui vedremo attraverso il puntatore possiamo invertire una stringa.

#includere
void reverse (char [], int, int);
int main ()

Char Str [100], temp; // dichiarando una stringa.
int i, J, len;
printf ("\ n Immettere qualsiasi stringa:");
ottiene (str);
Len = Strlen (STR);
retromarcia (STR, 0, len - 1); // invertendo la stringa.
printf ("\ n string dopo inverte = %s \ n", str);
restituzione 0;

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

char temp;
temp = str [i];
Str [i] = str [len - i];
Str [len - i] = temp;
if (i == Len/2)

ritorno ;

retromarcia (str, i + 1, len);

Produzione

Spiegazione

Qui all'interno della funzione principale (), dichiariamo una stringa denominata str [] e prendiamo una stringa dall'utente con l'aiuto della funzione get (), tranne per il fatto che definiamo una funzione denominata inversione () Per invertire la stringa attraverso un puntatore che può accedere ai valori di STR [].

Esempio-3

Qui vedremo attraverso il puntatore possiamo copiare una stringa.

#includere
/ * Prototipo di funzione */
void copia (char s2 [30], char s1 [30]);
/* Funzione principale */
int main ()

Char S1 [30], S2 [30];
int i;
printf ("immettere stringa: \ n");
ottiene (S1);
copia (S2, S1);
printf ("stringa copiata è: %s \ n", s2);
restituzione 0;

/* Definizione della funzione*/
Void Copy (Char S2 [30], Char S1 [30])

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

s2 [i] = s1 [i];

s2 [i] = '\ 0';

Produzione

Spiegazione

Qui all'interno della funzione principale (), dichiariamo due stringhe denominate S1 [] e S2 [] e prendiamo una stringa dall'utente con l'aiuto della funzione Get () nella stringa S1 []. Tranne il fatto che definiamo una funzione denominata copia () Per copiare la stringa di S1 ​​[] in String S2 [] tramite un puntatore in grado di accedere ai valori della stringa S1 [].

Esempio-4

Qui vedremo attraverso il puntatore che possiamo confrontare una stringa con un'altra stringa.

#includere
// funzione che confronta le due stringa
Vuoto confronti (char* x, char* y)

int flag = 0;
// itera un ciclo fino alla fine
// di entrambe le corde
mentre (*x != '\ 0' || *y != '\ 0')
if ( *x == *y)
x ++;
y ++;

// Se due caratteri non sono uguali
// Stampa la differenza e l'uscita
else if (( *x == '\ 0' && *y != '\ 0')
|| (*X != '\ 0' && *y == '\ 0')
|| *X != *y)
flag = 1;
printf ("stringhe ineguali \ n");
rottura ;


// Se due stringhe sono esattamente uguali
if (flag == 0)
printf ("uguali stringhe \ n");


// codice driver
int main ()

// Dato stringhe S1 e S2
Char S1 [20] = "Python";
Char S2 [20] = "DSA";
// chiamata funzione
confronti (S1, S2);
restituzione 0;

Produzione

Spiegazione

Qui all'interno della funzione principale () dichiariamo due stringhe denominate S1 [] e S2 []. In S1 [], assegniamo un valore chiamato "pitone" e in s2 [] nominato “DSA. " Tranne il fatto che definiamo una funzione denominata confrontare () Per confrontare la stringa di S1 ​​[] e la stringa di S2 [] tramite puntatore che può accedere ai valori della stringa S1 [] e della stringa S2 [] per confrontare entrambe le stringhe tra loro. Poiché due stringhe sono diverse qui, quindi l'output della stringa è un stringa disuguale.

Conclusione

In questo argomento, abbiamo coperto molto seriamente tutti gli aspetti del puntatore delle stringhe per comprendere il concetto di Puntatore di stringa. È molto comprensibile che tramite un puntatore possiamo facilmente accedere all'intero indice della stringa molto veloce e facile da rendere robusto il codice.