这是我的代码,我需要澄清此代码的输出:
#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 ;
}
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是
Address for name1 and name2 : 0x7fff9e6cbe10 and 0x7fff9e6cbe20
Address for name3 and name4 : 0x400760 and 0x400760
Run Code Online (Sandbox Code Playgroud)
这里的值的地址name1和name2是不同的,因为我分配了两个不同的阵列.但在的情况下name3和name4,地址是相同的,为什么不一样?它不会创建不同的内存并为值分配名称Chennai?为什么它指向相同的内存?
该标准允许:
6.4.5 - 7
如果这些数组 的元素具有适当的值,则不确定这些数组是否是不同的.如果程序试图修改这样的数组,则行为未定义.
我的意思是,只要你不修改它们就没关系吧?