#include <stdio.h> #include <string.h> #define LEN 14 #define uint16_t unsigned short int #define uint8_t unsigned char typedef struct{ uint16_t Head; uint8_t SourceID; uint8_t DestinationID; uint8_t Command; uint8_t Data[22]; uint16_t Tail; }FrameInfo_TypeDef; unsigned char gFrameInfo[LEN]; unsigned char buffer[LEN]; int main(int argc, char *argv[]) { unsigned int i = 0; for(;i<LEN;i++) { buffer[i] = i; } // memset(gFrameInfo, 0, LEN); memcpy(gFrameInfo, buffer, LEN); FrameInfo_TypeDef* sFrameInfo = (FrameInfo_TypeDef*)gFrameInfo; // sFrmameInfo = (FrameInfo_TypeDef*)&gFrameInfo; for(i=0; i<LEN; i++) { printf("gFrame[%d] = %d \r\n", i, gFrameInfo[i]); } printf("sFrameInfo.Head = %d\r\n", sFrameInfo->Head); printf("sFrameInfo.SourceID = %d\r\n", sFrameInfo->SourceID); printf("sFrameInfo.DestinationID = %d\r\n", sFrameInfo->DestinationID); printf("sFrameInfo.Command = %d\r\n", sFrameInfo->Command); for(i=0; i<30; i++) { printf("sFrameInfo.Data[%d] = %d \r\n", i, sFrameInfo->Data[i]); } printf("sFrameInfo.Tail = %d\r\n", sFrameInfo->Tail); printf("Hello C-Free!\n"); return 0; }
时间: 2024-04-18 16:33:31 浏览: 119
#include <stdio.h>
4星 · 用户满意度95%
这是一个简单的C语言程序,主要用于展示结构体和指针的使用。
程序中定义了一个名为`FrameInfo_TypeDef`的结构体,包含了头部、源ID、目标ID、命令、数据和尾部等字段。然后定义了一个长度为14的全局unsigned char数组`gFrameInfo`和另一个同样长度的数组`buffer`。
在`main`函数中,通过循环将`buffer`数组初始化为0到13的连续整数。然后使用`memcpy`函数将`buffer`的内容拷贝到`gFrameInfo`数组中。
接下来,将`gFrameInfo`数组强制转换为`FrameInfo_TypeDef`结构体指针`sFrameInfo`。这样就可以通过指针访问结构体中的各个字段。
最后,使用循环遍历打印出`gFrameInfo`数组和结构体`sFrameInfo`中的各个字段的值。
注意:该程序存在一些问题,例如未初始化部分数组元素,可能导致输出不准确。另外,结构体和数组之间的类型转换需要谨慎处理。
阅读全文