以下代码,哪个说法正确:
const char s1[] = "abc";
const char s2[] = "abc";
const char *p1 = "abc";
const char *p2 = "abc";
A. s1,s2地址不同,p1,p2地址相同
B. s1,s2地址相同,p1,p2地址相同
C. s1,s2地址不同,p1,p2地址不同
D. s1,s2地址相同,p1,p2地址不同
E. 4个变量地址都相同
F. 4个变量地址都不同
A. s1,s2地址不同,p1,p2地址相同
解释:
- const char s1[] = "abc"; 和 const char s2[] = "abc"; 分别定义了两个字符数组,它们各自在内存中有独立的存储空间,所以 s1 和 s2 的地址是不同的。
- const char *p1 = "abc"; 和 const char *p2 = "abc"; 定义了两个指针,它们指向字符串字面量 "abc"。在多数编译器和环境中,相同的字符串字面量会被存储在程序的只读数据段的同一位置,因此 p1 和 p2 指向的地址相同。