7
votes

Quelle est la différence entre Char et Char * en C ++?

Entruisant le code dans le livre C ++ de Schaum, j'ai vu beaucoup de code à l'aide de Char *, INT * etc. Faire les exercices, j'ai aussi vu que dans les solutions, il y a de Char * et dans mon code, j'ai utilisé Char (sans étoile).

Je veux savoir quelle est la différence entre un char et un pointeur Char - Integer et un pointeur entier? Où devrais-je les utiliser? Qu'est-ce que c'est exactement leur sens?


2 commentaires

Devrait-il arrêter les gens de répondre?


Char * est généralement utilisé pour itérer à travers un tableau de caractères, c'est-à-dire une chaîne C. Il est rarement utilisé comme un pointeur sur un seul caractère, contrairement à la manière dont les autres pointeurs sont généralement utilisés. C ++ possède de nouvelles constructions pour les chaînes qui devraient généralement être utilisées.


7 Réponses :


10
votes

Les variables avec le * sont des pointeurs.

une variable "normale", par exemple un char ou un int, contient la valeur de ce type de données lui-même - la variable peut contenir un caractère, ou un entier.

Un pointeur est un type particulier de variable; Il ne tient pas la valeur elle-même, elle contient l'adresse d'une valeur en mémoire. Par exemple, un char * ne contient pas directement de caractère, mais il contient l'adresse d'un caractère quelque part dans la mémoire de l'ordinateur.

Vous pouvez prendre l'adresse d'un ' Normal 'variable en utilisant & : xxx

et vous obtenez la valeur en mémoire à l'aide de * sur le pointeur: xxx

voir pointeur (calcul) < / a> en wikipedia.


4 commentaires

Je sais quel point pointer est - je veux connaître la différence entre une variable normale et un pointeur, et pourquoi, dans certains cas, je devrais utiliser un pointeur au lieu d'une variable normale.


Si vous savez ce qu'est un pointeur, vous connaissez la différence. Vous n'êtes évidemment pas. Ce n'est pas si simple, et même après une longue période, le grand "Aha!" moment venir.


Si vous savez ce qu'est un pointeur, et vous savez ce qu'est un INT ou un caractère, vous savez également quelle est la différence entre INT et INT * ou CHAR *. Si vous ne connaissez pas la différence entre eux, vous ne savez pas ce qu'ils sont.


Une variable normale est comme une maison et un pointeur est l'adresse à la maison. L'adresse pointe vers une maison physique.



0
votes

Avec un char ou INT, la valeur variable est la valeur attribuée réelle - 'A', ou 42. Avec un char * ou Int *, la valeur variable est l'emplacement dans la mémoire lorsque la valeur attribuée réelle est enregistrée. Par conséquent, le * signifie que la variable pointe vers un emplacement en mémoire où la valeur peut être trouvée.


0 commentaires


1
votes

Lorsque vous avez du char ou de l'int ou de la longue ou quelque chose comme ça, la mémoire est réservée pour maintenir la valeur, de sorte qu'un caractère est un octet de mémoire pour le stockage.

L'adresse de cet octet est ce que le pointeur pointe vers.

Ceci est utile lorsque vous avez une chaîne ou une ligne contiguë de caractères, comme vous pouvez alors indiquer le début de cette chaîne et la transmettre à une autre fonction, de sorte que la fonction peut utiliser les valeurs réelles de la chaîne.

Donc, vous signalez le pointeur à l'aide de l'astérisque.


0 commentaires

0
votes

variables avec * sont pointer. Cela signifie qu'ils contiennent une adresse de mémoire alors que les variables sans * contiennent de la valeur.

Un caractère contient une valeur de caractère comme 'A' ou 'Z'. Char * pointe vers une zone de mémoire où vous pouvez accéder aux valeurs de caractères de caractères. P>

A int variable contient une valeur entière comme 1 ou 12345. int * pointe sur une zone de mémoire où vous pouvez accéder à des valeurs int par int. p>

Ceci est vrai pour tous les autres types. P>

Exemple: P>

// pointer destruction
delete pchar;


1 commentaires

Votre exemple n'alloit pas un tableau de 5 caractères. Il alloue un caractère avec la valeur 5.



0
votes

OK,

Je vais faire un coup de poignard à cela. La différence entre char et char * est l'endroit où le compilateur met la variable en mémoire que votre utilisation.

Char c est une déclaration de pile. Le conteneur contient la valeur des données que vous avez intégrées et la pile des règles de portée s'appliquent. Lorsque vous appuyez sur la fin de votre corps de méthode, C serait "sortir de la portée" et sera automatiquement nettoyé.

char * c est une variable de pointeur. Ce qui signifie que la variable ne contienne pas la valeur des données que vous avez posées, mais plutôt une adresse à un endroit en mémoire, communément appelée «adresse mémoire». Ensuite, nous disons que C est "sur le tas" et vous, le programmeur est responsable du nettoyage. Donc, lorsque C est hors de portée, il n'est pas automatiquement nettoyé, vous devez appeler Supprimer sur elle pour libérer la mémoire.

Le * est un opérateur unaire et également appelé l'opérateur Déferencing .

Voici un bon wiki Dereference_Operator


1 commentaires

Les pointeurs ne signalent pas nécessairement la mémoire sur le tas. Voir la réponse de Jesper pour un exemple de pointeur pour empiler la mémoire.



2
votes

Char est un type de valeur, ce qui fait référence à une variable de ce type obtient un caractère. E.g.,

char* s = "hello";
cout << s; // prints hello
s++;
cout << s; // prints ello


0 commentaires