内个,说两句,前几天有个大三正在备考的学姐在群里问了一道题,我觉得挺有意思。放题:
炸一看可能有点懵,但是不要慌,各位,看我表演哈。
首先 int a = 10; 定义了一个int类型的变量a,开辟了一个int大小的内存名字叫a,里面有一个10。
又int b[ ] = {2,4,6,8}; 又定义了一个int类型的数组,同理,放图
接下来关键了啊,int * w[3] = {&a , b , &b[2] };可以这么看 :定义了一个w类型是int*
这么就有人问了,这都是啥子啊 :&a是a的地址 b就是b &b[2] 是b[2]的地址 这三个东东分别存进了int* w[0],int* w[1],int* w[2]。
最后输出的是w[0][0 。看到这里就看出来了 w是一个二维数组,先假设都是3个索引值的: 然后放图重点就是这些表格里代表的内容是什么!
**因为 第二行的int * w[3] ,可以看出w[0]存的是a的地址,所以输出w[0][0 就是输出w[0 这段地址上的值 又因为a=10 所以w[0[0 = 10 **
第二行因为 int * w[1] = b 所以可以看出来w[1]这行存放的值是数组b 因为b就是数组b的地址 因此 w的第二行存放的值就是b的第一个值2,因为数组b的地址上的值就是数组的第一个值也就是b[0] = 2
w[1][1就是b[0 后面的b[1 也就是 4。w[1[2就是6 因为之前假设w的索引是3 所以没有w[1[3了 如果有就是 8。
最后 w[2[0 还是同理第一个w[0][0 存的是b[2
自己花了一个草图 上面是自己编的内存地址 然后应该是连续的 因为方便 a和b就不连续了
如果哪里错了 。。。那就错吧。