web-dev-qa-db-fra.com

Où const char * obtient-il le pointeur vers une adresse mémoire?

Cela peut être une question simple, mais pourquoi un const char * n'a-t-il pas besoin d'une adresse mémoire pour pointer?

Exemple:

const char* a = "Anthony";

et pas:

const char *a = // Address to const char

comme tous les autres types le font?

24
Weidelix

"Pourquoi const char* vous n'avez pas besoin d'un pointeur vers une adresse mémoire? "

En fait, il fait a besoin d'une adresse mémoire sur laquelle pointer.

const char* a signifie que a est un pointeur vers une chaîne littérale ou une constante de caractère.

Un pointeur toujours nécessite une adresse sur laquelle pointer car il est de la nature d'un pointeur de pointer vers un objet spécifique en mémoire. Ainsi, a et tout autre pointeur vers const char aussi.

Une chaîne littérale comme "Hi My Name is Alfred!" par une affectation comme:

const char* a;
a = "Hi My Name is Alfred!";

se désintègre en un pointeur vers l'adresse du premier élément de la chaîne littérale.

Cela signifie à son tour, a est attribué par l'adresse du premier élément de la chaîne littérale "Hi My Name is Alfred!" qui pourrait être stocké n'importe où dans la mémoire en fonction de l'environnement d'exécution.

Ce n'est pas dans la puissance d'un programmeur où un littéral de chaîne est exactement stocké. Votre mission consiste uniquement à affecter et à gérer le pointeur respectif de manière appropriée.