https://blog.youkuaiyun.com/lmhlmh_/article/details/80529922
第九题:
int *p = &(a + 1)[3];
可以理解为:
int *p = &((a + 1) + 3);
第十题:最后4个可以这样理解
char *s ;
s = "China";
为什么可以把一个字符串赋给一个指针变量。。
这不是类型不一致吗???
编译器会给字符串常量分配地址,如果 "China", 存储在内存中的 0x3000 0x3001 0x3002 0x3003 0x3004 0x3005 .
s = "China" ,意识是什么,对了,地址。
其实真正的意义是 s ="China" = 0x3000;
看清楚了吧 ,你把China 看作是字符串,但是编译器把它看作是地址 0x3000,即字符串常量的本质表现是代表它的第一个字符的地址。。。。。。。。。。
s = 0x3000
这样写似乎更符合直观的意思,那么 %s ,它的原理其实也是通过字符串首地址输出字符串,printf("%s ", s); 传给它的其实是s所保存的字符串的地址。。。
我自己写了一个测试: