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). p>
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? p>
7 Réponses :
Les variables avec le 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. p> 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 Vous pouvez prendre l'adresse d'un ' Normal 'variable en utilisant et vous obtenez la valeur en mémoire à l'aide de * code> sont des pointeurs. char * code> 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. P> & code>: p> * code> sur le pointeur: p>
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.
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. P>
Un pointeur pointe vers l'adresse de la mémoire d'une variable spécifique. Les pointeurs peuvent être assez difficiles à comprendre au début pour certaines personnes, plus d'informations sur celui-ci sur Wikipedia a>. Un char * est un pointeur sur une séquence de caractères en mémoire, terminée par un '\ 0'. Un seul caractère représente un caractère. Un int * détient l'adresse de la mémoire à une valeur entière. P> exemple: p> Nous créons une nouvelle variable entière sur le tas et l'emplacement dans La mémoire est enregistrée dans le pointeur. Le pointeur indique maintenant cette partie de la mémoire où se trouve l'entier. Si j'aimerais utiliser la valeur de l'entier que le pointeur pointe, j'appellerais: P> int y = *x;
J'ai dû acheter un livre sur C qui était juste sur des pointeurs, mais une fois que je les ai compris, alors C est devenu facile à programmer.
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. P>
L'adresse de cet octet est ce que le pointeur pointe vers. p>
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. p>
Donc, vous signalez le pointeur à l'aide de l'astérisque. P>
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;
Votre exemple n'alloit pas un tableau de 5 caractères. Il alloue un caractère avec la valeur 5.
OK, P>
Je vais faire un coup de poignard à cela. La différence entre Le Voici un bon wiki Dereference_Operator P> char code> et char * code> est l'endroit où le compilateur met la variable en mémoire que votre utilisation. P>
Char c code> 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 code> serait "sortir de la portée" et sera automatiquement nettoyé. P>
char * c code> 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 code> est "sur le tas" et vous, le programmeur est responsable du nettoyage. Donc, lorsque C code> est hors de portée, il n'est pas automatiquement nettoyé, vous devez appeler Supprimer code> sur elle pour libérer la mémoire. P>
* code> est un opérateur unaire et également appelé l'opérateur Déferencing code>. P>
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.
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
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.