c语言利用地址来获取内容
前情提要
数组存储的地址是连续的,可以利用这性质来进行地址内容调用。
数据在数组中按矩阵存储,按行、列来存储。
如果元素字节长度不一样,可以额外搞个数组a来记录结构体每个元素的起始字节数。
+col改成+a[col]
函数例子
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
typedef struct
{
int number;//学号
int house_number;//房号
}NodeType;
typedef struct
{
NodeType data[MAX];//数据内容
int length;//长度
}SqList;
//学号 房号
//查找函数,key是要找到的关键字,col是地址当中的列
int search(SqList R,int key,int col)
{
int *p=&R.data[0].number;
for(int i=0;i<R.length;i++)
{
//int *q 默认地址是int类型 +4
int *q=(p+i*2)+col;
if(*q==key)
{
return *q;//找到,返回数据
}
}
return -1;//未找到,返回-1
}
int main()
{
SqList R={{20172100,00,20172101,01,20172102,02},3};
printf("%d",search(R,20172101,0));
putchar('\n');
int *p=(int *)0x1000;
printf("%p\n",p+1);//以地址形式输出
}