今天在学习字符指针时遇到了一个问题。
字符指针存储的字符串,应该只是存储首元素的地址。
例如//const char* p1 = "abcdef"; //只会存储‘a'的地址。
C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。
所以
const char* p1 = "abcdef";
const char* p2 = "abcdef";
这里的 p1 和 p2 的首元素’a'的地址应该是相同的
但是打印出的地址却是不同的。
对于这块知识我哪里的理解出了问题呢?
int main()
{
const char* p1 = "abcdef";
const char* p2 = "abcdef";
printf("%p\n", &p1);
printf("%p\n", &p2);
if (p1 == p2)
printf("p1==p2\n");
else
printf("p1!=p2\n");
char arr1[] = "abcdef";
char arr2[] = "abcdef";
printf("%p\n", &arr1);
printf("%p\n", &arr2);
if (arr1 == arr2)
printf("arr1 == arr2\n");
else
printf("arr1 != arr2\n");
return 0;
}