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就是一个指向字符串地址的指针。