|
本帖最后由 磊磊映画 于 2016-3-9 11:05 编辑
- /*
- **level = 0; 没配置过,不存在
- **level = 1; 普通联系人
- **level = 2; VIP 重要联系人
- */
- typedef struct {
- u8 level;
- u8 phone_num[12];
- } INFO_ContactsDef;//联系人信息
- typedef struct {
- u8 contacts_num;//联系人的个数
- INFO_ContactsDef INFO_CONTACTS[10];//定义十位联系人
- }DEVICE_ContactsDef;//设备联系人
- DEVICE_ContactsDef DEVICE_ContactsInfo;
- DEVICE_ContactsDef *DEVICE_ContactsPtr;
- DEVICE_ContactsPtr = &DEVICE_ContactsInfo;
复制代码
如上,定义了一个类似于手机通讯录的数据结构
数据结构存放联系人数量和十个联系人信息,
每个联系人的信息结构体里面存放一个标志位和一个11位的手机号。
想问一下,如何通过DEVICE_ContactsPtr指针逐一访问某一INFO_CONTACTS[0]中的每一个字节?
举例:
INFO_CONTACTS[0].level =1
INFO_CONTACTS[0].phone_num[0] = 0x31;
INFO_CONTACTS[0].phone_num[1] = 0x33;
DEVICE_ContactsPtr指针逐一访问某一INFO_CONTACTS[0]中的每一个字节的意思就是
通过改变指针指向让 指针能以增加地址的形式访问下一字节,而不受结构体成员变量的影响??
以下伪代码:
*(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>
- typedef unsigned char u8 ;
- /*
- **level = 0; 没配置过,不存在
- **level = 1; 普通联系人
- **level = 2; VIP 重要联系人
- */
- typedef struct {
- u8 level;
- u8 phone_num[12];
- }INFO_ContactsDef;//联系人信息
- typedef struct {
- u8 contacts_num;//联系人的个数
- INFO_ContactsDef INFO_CONTACTS[10];//定义十位联系人
- }DEVICE_ContactsDef;//设备联系人
- DEVICE_ContactsDef DEVICE_ContactsInfo;
- int main(int argc, char *argv[])
- {
- DEVICE_ContactsInfo.contacts_num = 10;
- DEVICE_ContactsInfo.INFO_CONTACTS[0].level = 1;
- DEVICE_ContactsInfo.INFO_CONTACTS[0].phone_num[0] = 2;
- u8* ptr = (u8*) &DEVICE_ContactsInfo.INFO_CONTACTS[0];
- printf("%x",*ptr);
- return 0;
- }
复制代码 输出:
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|