磊磊映画 发表于 2016-3-9 10:17:42

请教:结构体嵌套如何使用指针逐一访问每一字节

本帖最后由 磊磊映画 于 2016-3-9 11:05 编辑



/*
**level = 0; 没配置过,不存在
**level = 1; 普通联系人
**level = 2; VIP重要联系人
*/
typedef struct {
u8 level;
u8 phone_num;
} INFO_ContactsDef;//联系人信息

typedef struct {
u8 contacts_num;//联系人的个数
INFO_ContactsDefINFO_CONTACTS;//定义十位联系人
}DEVICE_ContactsDef;//设备联系人


DEVICE_ContactsDef DEVICE_ContactsInfo;
DEVICE_ContactsDef *DEVICE_ContactsPtr;
DEVICE_ContactsPtr = &DEVICE_ContactsInfo;

如上,定义了一个类似于手机通讯录的数据结构
数据结构存放联系人数量和十个联系人信息,
每个联系人的信息结构体里面存放一个标志位和一个11位的手机号。

想问一下,如何通过DEVICE_ContactsPtr指针逐一访问某一INFO_CONTACTS中的每一个字节?
举例:
INFO_CONTACTS.level =1
INFO_CONTACTS.phone_num = 0x31;
INFO_CONTACTS.phone_num = 0x33;

DEVICE_ContactsPtr指针逐一访问某一INFO_CONTACTS中的每一个字节的意思就是
通过改变指针指向让 指针能以增加地址的形式访问下一字节,而不受结构体成员变量的影响??
以下伪代码:
*(DEVICE_ContactsPtr) = 1;
*(DEVICE_ContactsPtr+1) = 0x31;
*(DEVICE_ContactsPtr+2) = 0x33;


请教,如何实现?
1.是不是一级指针实现不了,要用二级指针?
2.在DEVICE_ContactsDef 结构体里面增加一个 INFO_ContactsDef 类型的指针,才能访问INFO_CONTACTS里面的数据吧?
描述可能不太清楚。
谢谢 !

2016-3-9 11:03:09

结贴:
在二楼ilcvm大神的回复下搞定,谢谢
如下是我的测试
#include <stdio.h>
typedefunsigned char u8;
/*
**level = 0; 没配置过,不存在
**level = 1; 普通联系人
**level = 2; VIP重要联系人
*/
typedef struct {
u8 level;
u8 phone_num;
}INFO_ContactsDef;//联系人信息

typedef struct {
u8 contacts_num;//联系人的个数
INFO_ContactsDefINFO_CONTACTS;//定义十位联系人
}DEVICE_ContactsDef;//设备联系人


DEVICE_ContactsDef DEVICE_ContactsInfo;




int main(int argc, char *argv[])
{
    DEVICE_ContactsInfo.contacts_num = 10;
    DEVICE_ContactsInfo.INFO_CONTACTS.level = 1;
    DEVICE_ContactsInfo.INFO_CONTACTS.phone_num = 2;
    u8* ptr = (u8*) &DEVICE_ContactsInfo.INFO_CONTACTS;
        printf("%x",*ptr);
        return 0;
}输出:
1请按任意键继续. . .





磊磊映画 发表于 2016-3-9 10:20:30

顶起 大家都来说两句吧

ilcvm 发表于 2016-3-9 10:23:03

本帖最后由 ilcvm 于 2016-3-9 10:25 编辑

u8* ptr = (u8*) &DEVICE_ContactsInfo.INFO_CONTACTS;
*ptr = 1;
*(ptr + 1)= 0x31;
*(ptr + 2) = 0x33;

磊磊映画 发表于 2016-3-9 10:42:50

ilcvm 发表于 2016-3-9 10:23
u8* ptr = (u8*) &DEVICE_ContactsInfo.INFO_CONTACTS;
*ptr = 1;
*(ptr + 1)= 0x31;


我测试一下,谢谢,大神回复,顶起

磊磊映画 发表于 2016-3-9 11:06:09

磊磊映画 发表于 2016-3-9 10:42
我测试一下,谢谢,大神回复,顶起

我试了一下 可以的。谢谢大神,测试在一楼帖子里

dalarang 发表于 2016-3-9 13:02:08

对于指针来说,数据类型都是浮云,只有地址和长度的区别而已。

SealedGhost 发表于 2016-3-14 21:14:19

lzC语言没学好{:titter:}
页: [1]
查看完整版本: 请教:结构体嵌套如何使用指针逐一访问每一字节