1.char str1[]=“test”;这个过程是,在数据区上申请一个大小为5的arrary,用str1指示这段内存的首地址。第二句同样完成这一功能,但是操作系统不可能再用相同的内存区存str2,因为它已经被str1占有了。这时os就轮询新的内存,赋给这个array,返回str2.这样比较,自然是不同的地址,返回为false。 2.后面是同样的赋值过程,只不过加了个const表明这块区域是不可rewrite的,但是os并无法保证这个arrary是唯一的,我可以申请无数个这样的array,这一动态申请过程,os真的没办法对同一块内存,做两次=操作。而且你可以做个实验来说明,如果这个const是函数的参数,那它会因为是const的,而被放入寄存去,你看看这2个在寄存器中反汇编后的值,就一目了然了。
楼上说的是对的。 楼主的3.4行代码是不是写错了? 应该是: const char *str3 = "test"; const char *str4 = "test"; 这样str3 == str4 ,这个应该为true。
33,321
社区成员
41,774
社区内容
加载中
试试用AI创作助手写篇文章吧