给出字符串的定义:
字符串是以空字符结尾的char型数组再给出字符串常量的定义:字符串常量又称为字符串文字,是指位于一对双引号中的任何字符。双引号里面的字符加上编译器自动提供的结束标志\0字符,作为一个字符串被存在数组当中。那么怎么理解“字符串常量给出的是地址值”呢?看到这里就要知道在调用一个数组的时候,一般是给出这个数组的首元素的地址值,数组a的首元素的地址值&a[0]就是我们首先得到的一个数组的调用的值。那么上面也说过了,字符串常量作为一个数组,被储存在内存中,内存是按地址来分配空间的,当调用一个字符串常量的时候,就会得到这个字符串它的地址值。也就是这个意思。
另外,关于常量的地址问题
楼上的说法都是有问题的,C/C++只有文字常量区,保存的是"hello world"这类字符串。对于1、2、3、'a'这类的数,它们是存放在寄存器上的,没有所谓的内存地址。
C/C++只可以用指针取字符串常量的地址,该类被认为是左值,而其他的字面值常量(literal constant),则被认为是右值,不允许取地址。至于const常量,只能说是一个const修饰的只读变量,和字面值常量不同。
我只说两点:
1、字符串常量是有地址的 p="fuck".2、数据常量如5、6等,不需要地址存放,它作用是来初始化或者赋值,左值就成了它的地址,如 int fuck=5.我们使用时是使用fuck,而不是使用5