这是我的代码,我需要在此代码的输出中进行说明:
#include <stdio.h>
int main(void )
{
char name1[10] = "Rajan" , name2[10] = "Rajan" ;
char *name3 = "Chennai" , *name4 = "Chennai" ;
printf("\nAddress for name1 and name2 : %p and %p",name1,name2) ;
printf("\nAddress for name3 and name4 : %p and %p",name3,name4) ;
return 0 ;
}
这段代码的输出是
Address for name1 and name2 : 0x7fff9e6cbe10 and 0x7fff9e6cbe20
Address for name3 and name4 : 0x400760 and 0x400760
因为我分配了两个不同的数组,所以这里的值的地址name1
和不同的地址。name2
但是在 and 的情况下name3
,name4
地址是一样的,为什么不一样呢?它不会创建不同的内存并为值分配名称Chennai
吗?为什么它指向同一个内存?