首页 > 其他分享 >C语言获取结构体变量地址并且输出结构体变量任意地址的数据

C语言获取结构体变量地址并且输出结构体变量任意地址的数据

时间:2023-10-27 14:33:19浏览次数:40  
标签:变量 Item2 TestStr1 long C语言 地址 TestStr printf Ptr

#include<stdio.h>

 typedef struct Test{
    float Item1;
    char Item2;
    int Item3;
    short Item4;
    long Item5;
    double Item6;    
}TestStr1;

int main(){

    struct Test TestStr;
    void *Ptr;

    TestStr.Item1 =1.11;
    TestStr.Item2 =2;
    TestStr.Item3 =33;
    TestStr.Item4 =44;
    TestStr.Item5 =55;
    TestStr.Item6 =66.6;

    printf("offsets: Item1=%ld; Item2=%ld; Item3=%ld Item4=%ld Item5=%ld Item6=%ld\n",
            (long) &(((TestStr1*)0)->Item1),
            (long) &(((TestStr1*)0)->Item2),
            (long) &(((TestStr1*)0)->Item3),
            (long) &(((TestStr1*)0)->Item4),
            (long) &(((TestStr1*)0)->Item5),
            (long) &(((TestStr1*)0)->Item6));
                   
    Ptr = (char *)&TestStr;
   printf("Item1 = %f\r\n" ,*(float *)(Ptr +(long) &(((TestStr1*)0)->Item1)));
   printf("Item2 = %d\r\n" ,*(char *)(Ptr +(long) &(((TestStr1*)0)->Item2)));
   printf("Item3 = %d\r\n" ,*(int *)(Ptr +(long) &(((TestStr1*)0)->Item3)));
   printf("Item4 = %d\r\n" ,*(short *)(Ptr +(long) &(((TestStr1*)0)->Item4)));
   printf("Item5 = %d\r\n" ,*(long *)(Ptr +(long) &(((TestStr1*)0)->Item5)));
   printf("Item6 = %f\r\n" ,*(double *)(Ptr +(long) &(((TestStr1*)0)->Item6)));
    return 0;
}

 

标签:变量,Item2,TestStr1,long,C语言,地址,TestStr,printf,Ptr
From: https://www.cnblogs.com/bboy110/p/17792241.html

相关文章

  • c语言代码练习40
    问:实现两个字符串的比较#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>intmain(){char*p1="abcdefg";char*p2="abcder";intret=strcmp(p1,p2);if(ret==0......
  • c语言代码练习39
    问:实现两个字符串的追加#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>intmain(){chararr1[20]="abcdef";chararr2[]="yue";strcat(arr1,arr2);printf("......
  • c语言代码练习38
    问:实现字符串的拷贝#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>intmain(){chararr1[]="abcdef";chararr2[]="bit";strcpy(arr1,arr2);printf("%s&q......
  • 罗列大地址下文件名在A列
    importosimportopenpyxldeffind_image_folders(root_folder):"""返回所有找到的包含图片的文件夹路径"""image_folders=set()forroot,dirs,filesinos.walk(root_folder):forfileinfiles:iffile.lower().endswith......
  • Python给你一个字符串,你怎么判断是不是ipv4地址?手写这段代码,并写出测试用例【杭州多测
    ipv4地址的格式:(1~255).(0 ~255).(0 ~255).(0 ~255)1.正则表达式importredefcheck_ip(one_str):compile_ip=re.compile('^(([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$')ifcompile_ip.match(one_str):......
  • 获取配置json地址
    //加载配置文件varconfigurationBuilder=newConfigurationBuilder();//添加配置文件路径configurationBuilder.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");//获取Url信息varconfiguration=configurationBuilder.Build();stringname......
  • Shell-Makefile使用变量
    可以现在build.sh中source需要的config.sh配置文件,并export其中包含的变量。此时,变量在当前shell终端中生效。Makefile中只用变量应为${VAL}https://blog.csdn.net/mouday/article/details/128966176https://blog.csdn.net/QCZTZSWT357/article/details/102577134......
  • C语言基础
     关于二维数组https://blog.csdn.net/weixin_45332776/article/details/116613485    全局变量和静态本地变量关于static  https://blog.csdn.net/qq_43194080/article/details/125686287......
  • C语言小游戏篇
    大家好!今天我将为你展示一款由C语言编写的小游戏。这款游戏名为“数字猜猜乐”。让我们一起来体验一下吧!游戏开始时,系统会随机生成一个1到100之间的整数,然后你需要从1到100中猜出这个数字是多少。系统会根据你的猜测给出相应的提示,直到你猜中为止。我们首先定义一个变量来存储系统......
  • 在不知带头节点地址的情况下删除和插入一个p指针指向的节点总结
    在不知带头节点地址的情况下删除和插入一个p指针指向的节点总结(p指向的不是第一个,也不是最后一个)A->B->C*p->B插入(在p结点之前插入q)解析:直接往p前插入q,由于没有头节点,不能遍历到p的位置,所以向p的后面插入q,在交换p、q的值q->next=p->next;p->next=q;swap(&p......