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]); //是一个值,但地址不一样????
}