C++空字符指针和空字符串的区别,字符串也是一个地址啊,那么他们两个相等吗?

如题所述

字符串就是字符串,指针就是指针,不要把二者混淆。char *p,(*q)[10],a[10];这样声明的指针p是指向字符的,p=a是把字符串的第一个字符的地址赋给p,并非把字符串的首地址赋给p;q才是指向字符串a的首地址的指针,q=a才是把字符串a的首地址赋给q。由于a既是字符串的首地址,又是字符串第一个字符的地址,所以p和q的值是一样的,但意义不一样:p+1指向下一个字符,而q+1指向下一个字符串,就是说跳到&a[10]那个地址上了。“空字符指针”是啥意思?C++中没有空字符,如''是非法的,所以根本不可能有空字符指针;而空字符串是合法的,“”的意思是只在这个字符串常量中放一个'\0';所以空字符串有指针,比如char *p=""是合法的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-21
空字符指针是指指针的值为0吧
空字符串是指这个字符串的第一个字节值为0吧,如果你说拿一个指针指向这个字符串,那这个指针的值不为0而等于这个字节的地址。
当然在C++里通常用STL的std::string来存放字符串。
第2个回答  2014-03-21
对于char* 这样的指针,在类型上实际上不能区分开。你不知道它表示的是指向一个字符的指针,还是指向一个字符串的指针。
只能从意义上来区分。

但实际上,字符串是一个笼统的概念。一字符串,可能是一串字符,也可能是一个结构表示的字符串。这样就区分开来了。
相似回答