C++指向字符串的指针,指向的到底是什么?

C++指向字符串的指针,指向的到底是什么?

问题描述:

如图。names[i]指向的是地址还是字符串?

比如 输出names[0]显示Zara Ali,那么names[0]指向的是这个字符串的地址还是字符串?书上写是地址,那为什么不显示这个字符串的地址呢?

指向的是这个字符串的地址。但是只针对于你的元素是char *类型

char a[3];

scanf("%s", a);

printf("%s", a);

你这里的a就是地址啊,你输出的时候就是告诉这个函数你的地址是多少,然后他把这个地址上的东西输出来

这里仅对char *类型,即字符串类型成立,单个字符或者其他的,都不成立

刚好你的name字符组的元素是字符串类型

(个人见解)

我个人理解,names[i]类型是const char *,也就是说它是一个字符指针,这个指针指向一个字符,这个字符可以是单个字符也可以是一个字符串首个字符。你这种初始化方式的话names[i]就是一个字符指针,指向一个字符串首个字符,可以说它指向一个字符串。char **类型才是指向一个指向字符串地址的指针。names+i就是一个指向字符串地址的指针。