char et char* (pointeur)

Je voudrais comprendre comment les pointeurs de travail, j'ai donc créé ce petit programme. tout d'abord, je créer un p pointeur qui pointe sur un char.

La première question est à ce point. Si je crée un pointeur, la valeur de celui-ci est un memoryaddress (si j'point à un non-pointeur de l'objet), mais cette fois, c'est "haha" dans mon exemple. Pourquoi faut-il travailler de cette façon dans char*? Et comment je peut ajouter de la valeur avec le cin >> p?

Ma deuxième question est que, j'ai créé un q char, qui a la valeur de l' *p pointeur sur le point que j'ai créé il. MAIS sa valeur et l'adresse de "h" de trop, mais pourquoi? Il doit être l'adresse de la mémoire de ce char objet! Il ne sert à rien 😀 (mingw - gcc)

#include <iostream>

int main() 
{
 /* char *p;
    cin >> p;                      //forexample: haha */

    char * p = "haha";
    char q = *p;
    std::cout << "&q = " << &q << std::endl;   //&q = h
    std::cout << "q  = " <<  q << std::endl;   //q = h

    return 0;
}

PLUS: Si j'alloue de la mémoire de la première avec un char[100]; char *p=a; puis &q = h»ŢĹ, si "h" et quelques dégâts. mais il doit être un memoryaddress! et ma question est, pourquoi n'est-il pas d'adresse alors?

Ce n'est pas sûr. p n'ont pas de mémoire pour la saisie.

OriginalL'auteur Iburidu | 2012-10-13