Maison > développement back-end > C++ > le corps du texte

Quelle est la différence entre `char*` et `char[]` en C ?

Barbara Streisand
Libérer: 2024-10-27 04:47:02
original
628 Les gens l'ont consulté

 What's the Difference between `char*` and `char[]` in C?

Comprendre la distinction entre char* et char[]

Lorsque l'on traite des tableaux de caractères et des pointeurs en programmation C, il est crucial de saisir les différences fondamentales entre char str[] = "Test"; et char *str = "Test";.

char str[] = "Test";

Dans cette déclaration, str représente un tableau de caractères (caractères) de taille fixe, initialisée avec le contenu de la chaîne "Test". Le tableau possède sa propre mémoire et est distinct de la chaîne littérale d'origine. Toute modification apportée à str modifiera la copie locale des données, et non la chaîne "Test" elle-même.

char *str = "Test";

Ici, str est un pointeur, en particulier un pointeur vers le premier caractère de la chaîne littérale « Test ». Le pointeur stocke l'adresse mémoire de ce caractère. Cependant, il est crucial de se rappeler que str ne possède pas la mémoire dans laquelle la chaîne est stockée ; au lieu de cela, il pointe vers la chaîne littérale en lecture seule (const). Par conséquent, toute tentative de modification de la chaîne pointée par str entraînera un comportement indéfini.

Différences clés :

  1. Propriété : Les tableaux char[] possèdent leurs données, tandis que les pointeurs char* font référence aux données appartenant à une autre entité.
  2. Mutabilité : les tableaux char[] peuvent être modifiés (par exemple, de nouvelles valeurs attribuées), mais char * Les pointeurs pointent vers des littéraux immuables, et la modification des données vers lesquelles ils pointent n'est pas définie.
  3. Allocation de mémoire : les tableaux char[] allouent de la mémoire locale sur la pile, alors que les pointeurs char* peuvent faire référence à mémoire n'importe où dans le programme, y compris les littéraux et autre mémoire allouée.
  4. Détermination de la taille : La taille des tableaux char[] est fixée au moment de la compilation, tandis que la taille des données pointées par Les pointeurs char* sont déterminés par les données elles-mêmes ou par l'allocation de mémoire externe.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!