其实你这样看不能很好的说明str2的地址就必须是紧跟着str1的,毕竟你这是两个临时变量,地址是可能随机分配的。
volatile unsigned char *st1[] = {"Hello", "Hello"};
这行代码,
&st1[0]和&st1[1]的值,在不同位数的处理器中,相差的值也会不同。
比如STM32处理器,是32位处理器,保存一个内存地址就要32位,也就是4个字节,那么
&st1[1]-&st1[0]=4
然后思考下:
volatile unsigned char str[3];
这行代码中,在32位处理器里,&str[1]-&str[0]
等于多少?