结构体的指针偏移

来源:互联网 发布:gradle java 版本 编辑:程序博客网 时间:2024/05/22 03:32

刚开始工作,接触到大量的结构体指针代码,指针基础不好,遂写了些测试代码,总算搞明白了

#include <stdio.h>#include <string.h>#include <malloc.h>typedef struct{    int num;    char* str;    char body[0];//也可以是普通数组,但是柔性数组可以节省空间}CWMP;int main(){    CWMP *cwmp=(CWMP*)malloc(sizeof(CWMP));    cwmp->str=(char*)malloc(10);//这里一定要分配内存,CWMP分配的内存不包括str的内存    //整形的指针    int *ptr_num=&cwmp->num;    *ptr_num=123;    printf("num:%d\n",cwmp->num);    //二级指针    char arr[]="123123456456";    char **ptr_str=&cwmp->str;    strncpy(*ptr_str,arr,strlen(arr));    //*ptr_str="testString";    printf("str:%s\n",cwmp->str);    //数组的指针    char *ptr_body=(char*)cwmp->body;    ptr_body[0]=1;    ptr_body[1]='a';    ptr_body[2]=3;    printf("body:%d,%c,%d\n",cwmp->body[0],cwmp->body[1],cwmp->body[2]);    return 0;}
1 0
原创粉丝点击