Maison > développement back-end > C++ > Quelle est la différence entre `char a[] = 'string';` et `char *p = 'string';` en C ?

Quelle est la différence entre `char a[] = 'string';` et `char *p = 'string';` en C ?

DDD
Libérer: 2024-12-17 19:56:11
original
645 Les gens l'ont consulté

What's the Difference Between `char a[] =

Différence entre "char a[] = "string";" et "char *p = "string";"

En programmation, les variables peuvent être soit des pointeurs, soit des tableaux. Lors de la déclaration de variables, la syntaxe des pointeurs et des tableaux diffère. Comprendre la distinction entre les deux est crucial pour manipuler correctement les données.

char a[] = "string";

Cette ligne de code crée un tableau de caractères de grande taille assez pour stocker la chaîne "string" avec son terminateur nul. Le tableau "a" est initialisé avec les éléments de la chaîne "string". Un tableau peut être modifié ultérieurement et sa taille est connue au moment de la compilation, ce qui permet d'utiliser l'opérateur "sizeof" pour déterminer sa longueur.

char *p = "string";

Cette ligne de code crée un pointeur nommé "p" qui pointe vers l'adresse de la chaîne "string". Le pointeur "p" ne peut pas être modifié, mais la chaîne vers laquelle il pointe peut le faire, ce qui entraîne un comportement indéfini.

Comparaison :

  • Stockage : Les tableaux occupent un espace mémoire continu, tandis que les pointeurs stockent l'adresse d'une mémoire emplacement.
  • Modification : Les tableaux permettent des modifications de leurs éléments, tandis que les pointeurs pointant vers des chaînes ne doivent pas être modifiés car ils résident souvent en mémoire en lecture seule.
  • Taille : Les tableaux ont une taille fixe, déterminée au moment de la compilation, tandis que la taille de la chaîne pointée par un pointeur doit être déterminée à l'aide de fonctions comme "strlen()" puisque "sizeof" renvoie la taille du pointeur lui-même.
  • Utilisation : Utilisez des tableaux pour les données qui doivent être modifiées et des pointeurs pour les données qui sont constantes et doivent ne pas être modifié.

Remarque : L'exemple de la question contient une faute de frappe, comme "?" n'est pas un opérateur valide dans ce contexte. Il a été supposé que la question envisagée portait sur la différence entre les tableaux et les pointeurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal