11.18
拉链结构
把数组里放数组的地址
在这里会用到下标运算,格式类似二维数组
二维数组内存格式是一块连续的空间
拉链结构中,仅存放的地址是相邻的
二维数组每个小数组元素数量相同
拉链结构中元素数量无限制
只有在定义的时候[ ]才是数组
#include<stdio.h>int main(){int a[5][3]={{5,9,7},{6,1,3},{2,4,8},{11,12,13},{14,15,16}};int g[2]={66,99};int k[3]={55,77,44};int *b=&a[0][2];int *c=&a[2][0];int (*d)[5][3]=&a; //数组指针int (*o)[3]=a; //数组指针(这里是int[3],而不失int[5],因为要定义的是一维数组)int* p[2]={b,c}; //指针数组int* f[2]={k,g}; //指针数组 (放地址的数组)int* q[2]={&a[0][2],&a[2][0]} ; //指针数组/* *o==a[0]*o[0]==a[0][0]*o[1]==a[0][1]*(p+1)==a[1] ~p定义为一个含三个整型元素的数组的地址,其所占内存为12,+1即为下一个数组~(*(p+1))[0]==a[1][0]==p[1][0] ~不能没有[0]~ */printf("%d %d,%d\n",p[1],q[1],p[0][1]);printf("%d %d %d\n",&a[1][0],&a,d);printf("%d %d %d %d\n",d[0][1],&a[0][1],(*d)[0][1],a[0][1]); //是一个值,但地址不一样????}
