En tant que variable avec durée de stockage automatique, le pointeur str
a une valeur indéterminée. Si même il avait la durée de stockage statique, sa valeur serait NULL. Vous ne pouvez donc pas utiliser un tel pointeur pour stocker des données.
Qu'est-ce que vous voulez dire peut regarder par exemple la façon suivante
#include <stdio.h>
int main(void)
{
char s[11];
char *p = s;
while (p != s + sizeof(s)/sizeof(*s) - 1) *p++ = 'a';
*p = '\0';
puts(s);
return 0;
}
La sortie du programme est
aaaaaaaaaa
Ici, dans le programme, le pointeur p
du type char *
est initialisé par l'adresse du premier caractère du tableau s
.
Ainsi cette instruction utilisée dans la boucle
*p++ = 'a';
remplit successivement le tableau avec le caractère 'a'
.
L'exemple suivant est plus intéressant
#include <stdio.h>
char * copy_string(char *dsn, const char *src)
{
for (char *p = dsn; (*p++ = *src++) != '\0';)
{
// empty body
}
return dsn;
}
int main(void)
{
char *src = "Hi QBl";
char dsn[7];
puts(copy_string(dsn, src));
return 0;
}
La sortie du programme est
Hi QBl
Voici une démonstration d'une fonction qui copie un tableau de caractères contenant une chaîne dans un autre tableau de caractères en utilisant des pointeurs.
Fais quoi? Comprenez-vous * pourquoi * ça ne marche pas? –
Cela ne fonctionne pas car 'str' ne pointe à rien de déterminé. Il n'y a pas de "là" là-bas. – WhozCraig
J'aime la structure de la * Il n'y a pas "là" là. * Phrase ... –