数组,指针,结构体的使用

来源:互联网 发布:推淘宝店铺的微博 编辑:程序博客网 时间:2024/06/13 16:22

在使用C语言表述一组有特定格式,顺序的数据时,如报文。报文数据,经常会包含不同功能的数据,为了区分顺序和定位数据在报文中的位置,通常我们会采用定义结构体的方式来表示报文,如接收。如果想发送数据时,我们只需要顺序发送,不关心具体位置,此时定义数组较为方便。为了兼顾这两种情况,可以通过合理的使用数组,指针,和结构之间的转换来解决该问题。


#include <stdio.h>unsigned char a[2] = {0,1};typedef struct{unsigned char a[10];unsigned char b;unsigned char c;}str_TypeDef;str_TypeDef str;unsigned char *p = (unsigned char *)&str;unsigned char d[12]; str_TypeDef *pstr = (str_TypeDef *)&d;void test(void){unsigned char *p = &a;//*(p+0) =  3;//printf("*(p+0) =  %d\r\n", *p);//*(p+1) =  4;//printf("*(p+1) =  %d\r\n", *(p+1));*p  =  3;printf("*(p+0) =  %d\r\n", *p);*(p+1) =  4;printf("*(p+1) =  %d\r\n", *(p+1));}int main(int argc, char *argv[]){//test();//printf("a[0] = %d\r\n", a[0]);//printf("a[1] = %d\r\n", a[1]);    int i = 0;    for(; i<10; i++)    {    str.a[i] = i;    }    str.b = 55;    str.c = 66;       for(i = 0; i<12; i++)    {    printf("*p+%d is: %d\r\n", i, *(p+i));    }    for(i = 0; i<12; i++)    {    d[i] = i;    }    for(i = 0; i<10; i++)    {    printf("pstr->a[%d] = %d \r\n", i, pstr->a[i]);    }    printf("pstr->b = %d \r\n", pstr->b);    printf("pstr->c = %d \r\n", pstr->c);return 0;}



阅读全文
0 0
原创粉丝点击