Quelle est la différence entre char et char* en C++?
L'étude le code dans Schaum du C++ livre, j'ai vu beaucoup de code à l'aide de char*, int* etc.
Faire les exercices j'ai aussi vu que dans les solutions, il est de type char* et dans mon code, j'ai utilisé char (sans l'étoile).
Je veux savoir quelle est la différence entre un char et un pointeur de char - entier et un pointeur d'entier ? Où dois-je utiliser ? Quel est exactement leur signification ?
cela devrait empêcher les gens de répondre?
char* est généralement utilisée pour parcourir un tableau de caractères, c'est à dire, une chaîne C. Il est rarement utilisé comme un pointeur vers un char, contrairement à la façon dont les autres les pointeurs sont généralement utilisés. C++ a de nouveaux des constructions pour les chaînes qui doivent généralement être utilisé.
char* est généralement utilisée pour parcourir un tableau de caractères, c'est à dire, une chaîne C. Il est rarement utilisé comme un pointeur vers un char, contrairement à la façon dont les autres les pointeurs sont généralement utilisés. C++ a de nouveaux des constructions pour les chaînes qui doivent généralement être utilisé.
OriginalL'auteur gujo | 2009-09-26
Vous devez vous connecter pour publier un commentaire.
Les variables avec les
*
sont des pointeurs.Un niveau "normal" de la variable, par exemple un char ou int, contient la valeur de ce type de données elle-même - la variable peut contenir un caractère ou un nombre entier.
Un pointeur est un type de variable; il ne contient pas la valeur elle-même, il contient l'adresse d'une valeur en mémoire. Par exemple, un
char *
n'est pas directement contiennent un caractère, mais il contient l'adresse d'un personnage quelque part dans la mémoire de l'ordinateur.Vous pouvez prendre l'adresse d'une "normale" variable à l'aide de
&
:Et vous obtenez la valeur dans la mémoire en utilisant
*
sur le pointeur:Voir Pointeur (informatique) dans Wikipedia.
Si vous savez ce qu'est un pointeur, alors vous savez la différence. Vous obviosly ne le font pas. Il n'est pas simple, et même après une longue période de temps peut le grand "ahha!" moment venu.
Si vous savez ce qu'est un pointeur, et vous savez ce qu'est un int ou un char, alors vous savez aussi quelle est la différence entre int et int* ou char et char*. Si vous ne connaissez pas la différence entre eux, alors vous ne savez pas ce qu'ils sont.
Une variable normale, c'est comme une maison, et un pointeur est l'adresse de la maison. L'adresse des points pour une maison physique.
OriginalL'auteur Jesper
Vous devriez lire le chapitre 7 dans votre livre qui explique les pointeurs - vous aurez probablement besoin de plus d'une réponse courte ici pour vraiment comprendre le sujet.
OriginalL'auteur Georg Fritzsche
Un pointeur pointe vers l'adresse mémoire d'une variable spécifique. Les pointeurs peuvent être assez difficiles à comprendre au premier abord, pour certaines personnes, plus d'informations à ce sujet sur wikipédia.
Un char* est un pointeur vers une chaîne de caractères dans la mémoire, terminé par un '\0'. Un seul char représente un caractère. Un int* contient l'adresse en mémoire d'une valeur entière.
Exemple:
Nous créons une nouvelle variable de type entier sur le tas, et l'emplacement dans la mémoire est enregistrée dans le pointeur. Le pointeur pointe maintenant à la partie de la mémoire où le nombre entier est situé. Si je voudrais utiliser la valeur de l'entier que le pointeur pointe, alors que j'appellerais:
Ce déréférence l'adresse de la mémoire; il obtient la valeur derrière le pointeur. La valeur de y est la valeur du type de données dans la mémoire sur laquelle pointe le pointeur.
OriginalL'auteur Charles
Lorsque vous avez char ou int ou long ou quelque chose comme ça, alors la mémoire est mise de côté pour conserver la valeur, donc, un char est de 1 octet de mémoire pour le stockage.
L'adresse de l'octet est ce que le pointeur pointe.
Cette fonction est utile lorsque vous avez une chaîne, ou une zone contiguë de la ligne de char, comme vous pouvez ensuite le point de départ de cette chaîne, et de passer à une autre fonction, de sorte que la fonction peut utiliser les valeurs réelles dans la chaîne.
Donc, vous signifiez le pointeur à l'aide de l'astérisque.
OriginalL'auteur James Black
Avec un char ou int, la valeur de la variable est la valeur attribuée à l' - 'a', ou 42. Avec un char* int*, la valeur de la variable est l'emplacement dans la mémoire où la réelle valeur assignée est enregistré. Par conséquent, le * signifie que la variable pointe vers un emplacement dans la mémoire où la valeur peut être trouvé.
OriginalL'auteur Kaleb Brasee
OK,
Je vais prendre un coup de couteau à présent. La différence entre
char
etchar*
est où le compilateur met la variable dans la mémoire de votre aide.char c
est une pile de déclaration. Le récipient contient la valeur des données que vous avez mis en elle, et la pile portée règles s'appliquent. Lorsque vous atteignez la fin de votre corps de la méthode,c
serait "hors de portée" et être automatiquement nettoyé.char *c
est un pointeur de variable. Ce qui signifie que, la variable ne contient pas la valeur des données que vous avez mis en elle, mais plutôt une adresse pour une place en mémoire au lieu de cela, communément appelé, "adresse mémoire". Alors nous disons quec
est "sur le tas" et vous, le programmeur sont responsables du nettoyage. Alors, quandc
est hors de portée, il n'est pas automatiquement nettoyé, vous êtes tenu à appelerdelete
sur pour libérer de la mémoire.La
*
, est un opérateur unaire et aussi appelé ledeferencing operator
.voici un bon wiki Dereference_operator
OriginalL'auteur Chris
char est un type de valeur, donc de la référence d'une variable de ce type obtient un char. E. g.,
char* est un pointeur vers un char, généralement utilisé pour itérer sur les chaînes de caractères. E. g.,
OriginalL'auteur UncleO
Variables avec * sont pointeur. Cela signifie qu'ils sont contenant une adresse de mémoire alors que les variables sans * contient de la valeur.
Alors un char contient une valeur de caractère comme 'un' ou 'Z'.
char* pointe vers une zone mémoire où vous pouvez accéder à des valeurs de char par char.
Un int variable contient une valeur entière comme 1 ou 12345.
int* pointe vers une zone mémoire où vous pouvez accéder à des valeurs de type int int.
Cela est vrai pour tous les autres types.
Exemple:
Il alloue une zone mémoire de 5 * sizeof(char) et vous permettra d'accéder à 5 caractères.
Ne pas oublier de libérer la mémoire quand le pointeur de la souris n'est plus nécessaire.
Oups utiliser '()' au lieu de '[]'. Merci pour le point de me
OriginalL'auteur Patrice Bernassola