• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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);//以地址形式输出
}

输出

posted on 2022-04-12 20:01  王陈锋  阅读(99)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3