结构体与指针_sizeof_static_extern_函数指针数组_函数指针_回调函数

一、结构体与指针

#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#define up_to_down(uuu) (downdemo_t *)(uuu->beg)
#define __plc__
typedef struct updemo_s{uint8_t *head;uint8_t *beg;uint8_t *end;
}updemo_t;
typedef struct downdemo_s{uint8_t value;uint16_t type;uint8_t mmentry[0];
}downdemo_t;
typedef struct mmsg_s{uint8_t hh;uint8_t hhh;
}mmsg_t;
__plc__ int main(int argc, char* argv[])
{updemo_t *uu;downdemo_t *dd;mmsg_t *mm;uu=(updemo_t *)malloc(sizeof(updemo_t));uu->beg=malloc(sizeof(downdemo_t));dd=up_to_down(uu);dd->value=4;dd->type=8;mm=(mmsg_t *)dd->mmentry;mm->hh=10;mm->hhh=12;printf("dd->value: %d\n",dd->value);printf("dd->type: %d\n",dd->type);printf("mm->hh: %d\n",mm->hh);printf("mm->hhh: %d\n",mm->hhh);return 0;  
}

二、sizeof

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main(int argc, char* argv[])
{uint8_t a[1];uint8_t b[0];uint8_t *c;printf("a[1]: %ld a: %\n",sizeof(a));printf("b[0]: %ld\n",sizeof(b));printf("*c: %ld\n",sizeof(c));return 0;
}

#include<stdio.h>
#include<stdlib.h>
#include<stdint.h>
int main(int argc,char* argv[])
{uint8_t a[1];uint8_t b[0];uint8_t *c;int *d;char e;int f;char g[]={"1234\0"};printf("a[0]: %d sizeof(a): %ld\n",a[0],sizeof(a));printf("b[0]: %d sizeof(b): %ld\n",b[0],sizeof(b));printf("*c: %d sizeof(c): %ld\n",*c,sizeof(c));printf("sizeof(d): %ld\n",sizeof(d));printf("sizeof(e): %ld\n",sizeof(e));printf("sizeof(f): %ld\n",sizeof(f));printf("sizeof(g): %ld\n",sizeof(g));return 0;
}

 

三、static

#include <stdio.h>
void func1(void);
static int count=10;
int main()
{while(count--){func1();}return 0;
}
void func1(void)
{static int thingy=5;thingy++;printf("thingy is %d ,count is %d\n",thingy,count);
}

四、extern

first.c


#include <stdio.h>int count;
extern void write_extern();int main()
{count=5;write_extern();
}

support.c

#include <stdio.h>extern int count;void write_extern(void)
{printf("count is %d\n",count);
}

五、函数指针数组

#include <stdio.h>
#include <stdlib.h>int a()
{printf("\n1\n");return 1;
}
int b()
{printf("\n2\n");return 2;
}
int c()
{return 3;
}
int d()
{return 4;
}
int (*oper_func[])(void)={a,b,c,d};
int main()
{for(int i=0;i<4;i++){printf("i:%d  oper_func[i]:%d  *oper_func[i]:%d  oper_func[i]():%d\n",i,oper_func[i],*oper_func[i],oper_func[i]());}
}

六、函数指针

#include <stdio.h>int (*p1)(int, int);
int max(int x, int y)
{return x > y ? x : y;
}int main()
{int (*p2)(int, int)= max;p1=max;int a,b,c,d;printf("请输入三个数:");scanf("%d %d %d",&a, &b, &c);d=p1(p1(a,b),c);printf("p1最大的数d是:%d p1:%d\n",d,p1);printf("p2(p2(a,b),c):%d p2:%d\n",p2(p2(a,b),c),p2);return 0;
}

七、回调函数

#include <stdio.h>
#include <stdlib.h>void populate_array(int *array, size_t arraySize, int(*getNextValue)(void))
{for(size_t i=0; i<arraySize;i++){array[i]= getNextValue();}
}int getNextRandomValue(void)
{return rand();
}int main()
{int myarray[10];populate_array(myarray,10,getNextRandomValue);for(int i=0; i<10; i++){printf("%d\n",myarray[i]);}return 0;
}

八、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/161553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

陪玩圈子系统APP小程序H5,详细介绍,源码交付,支持二开!

陪玩圈子系统&#xff0c;页面展示&#xff0c;源码交付&#xff0c;支持二开&#xff01; 陪玩后端下载地址&#xff1a;电竞开黑陪玩系统小程序&#xff0c;APP&#xff0c;H5: 本系统是集齐开黑&#xff0c;陪玩&#xff0c;陪聊于一体的专业APP&#xff0c;小程序&#xff…

2:kotlin集合(Collections)

集合有助于数据分组&#xff0c;方便后续操作 集合类型说明Lists有序的可重复的集合Sets无序的不可重复的集合Maps键值对映射集合&#xff0c;键唯一&#xff0c;且一个键只能映射到一个值 每个集合类型都可以是可变的或者只读的 List List按照添加的顺序存储内容&#xff…

Linux进程通信——共享内存

概念 共享内存&#xff08;Shared Memory&#xff09;&#xff0c;指两个或多个进程共享一个给定的存储区。 特点 共享内存是最快的一种 IPC&#xff0c;因为进程是直接对内存进行存取。 因为多个进程可以同时操作&#xff0c;所以需要进行同步。 信号量共享内存通常结合在一…

Open3D (C++) 计算两点云之间的最小距离

目录 一、 算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、 算法原理 Open3D中ComputePointCloudDistance函数提供了计算从源点云到目标点云的距离的方法,计算点云的距离。也…

python数据结构与算法-05_栈

栈 栈这个词实际上在计算机科学里使用很多&#xff0c;除了数据结构外&#xff0c;还有内存里的栈区 &#xff08;和堆对应&#xff09;&#xff0c;熟悉 C 系语言的话应该不会陌生。 上一章我们讲到了先进先出 queue&#xff0c;其实用 python 的内置类型 collections.deque …

【C语法学习】26 - strcmp()函数

文章目录 1 函数原型2 参数3 返回值4 比较机制5 示例5.1 示例1 1 函数原型 strcmp()&#xff1a;比较str1指向的字符串和str2指向的字符串&#xff0c;函数原型如下&#xff1a; int strcmp(const char *str1, const char *str2);2 参数 strcmp()函数有两个参数str1和str2&a…

HCIP-四、MUX-vlanSuper-vlan+端口安全

四、MUX-vlan&Super-vlan端口安全 MUX-vlan实验拓扑实验需求及解法1. 在SW1/2/3分别创建vlan10 20 30 402. SW1/2/3之间使用trunk链路&#xff0c;仅允许vlan10 20 30 40 通过。3. SW与PC/Server之间使用access链路。4. ping验证&#xff1a; Super-vlan端口安全实验拓扑实…

【腾讯云云上实验室-向量数据库】腾讯云开创新时代,发布全新向量数据库Tencent Cloud VectorDB

前言 随着人工智能、数据挖掘等技术的飞速发展&#xff0c;海量数据的存储和分析越来越成为重要的研究方向。在海量数据中找到具有相似性或相关性的数据对于实现精准推荐、搜索等应用至关重要。传统关系型数据库存在一些缺陷&#xff0c;例如存储效率低、查询耗时长等问题&…

CentOS使用docker安装OpenGauss数据库

1.搜索OpenGauss docker search opengauss 2.选择其中一个源拉取 docker pull docker.io/enmotech/opengauss 3.运行OpenGauss docker run --name opengauss --privilegedtrue --restartalways -d -e GS_USERNAMEpostgres -e GS_PASSWORDmyGauss2023 -p 5432:5432 docker.…

黑马React18: ReactRouter

黑马React: ReactRouter Date: November 21, 2023 Sum: React路由基础、路由导航、导航传参、嵌套路由配置 路由快速上手 1. 什么是前端路由 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 2. …

2023年中国高压驱动芯片分类、市场规模及发展趋势分析[图]

高压驱动芯片是一种能在高压环境下工作的集成电路&#xff0c;主要用于控制和驱动各种功率器件&#xff0c;如继电器、电磁阀、电机、变频器等。高压驱动芯片根据其输出电流的大小和形式可分为两类恒流型和开关型。 高压驱动芯片分类 资料来源&#xff1a;共研产业咨询&#x…

蓝桥杯算法双周赛心得——迷宫逃脱(记忆化搜索)

大家好&#xff0c;我是晴天学长&#xff0c;非常经典实用的记忆化搜索题&#xff0c;当然也可以用dp做&#xff0c;我也会发dp的题解&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .迷宫逃脱 迷官逃脱…

ubuntu操作系统中docker下Hadoop分布式前置环境配置实验

版本&#xff1a; centos7 hadoop 3.1.3 java JDK:1.8 集群规划&#xff1a; masterslave1slave2HDFS NameNode DataNode DataNode SecondryNameNode DataNode YARNNodeManager ResourceManage NodeManager NodeManager 1.docker容器&#xff1a; 把普通用户加入到docker组&am…

opencv-Canny 边缘检测

Canny边缘检测是一种经典的图像边缘检测算法&#xff0c;它在图像中找到强度梯度的变化&#xff0c;从而识别出图像中的边缘。Canny边缘检测的优点包括高灵敏度和低误检率。 在OpenCV中&#xff0c;cv2.Canny() 函数用于执行Canny边缘检测。 基本语法如下&#xff1a; edges…

代码随想录 134. 加油站

题目 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。 给定两个整数数组 gas 和 cos…

本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)

按照固有思维方式&#xff0c;深度学习的训练环节应该在云端&#xff0c;毕竟本地硬件条件有限。但事实上&#xff0c;在语音识别和自然语言处理层面&#xff0c;即使相对较少的数据量也可以训练出高性能的模型&#xff0c;对于预算有限的同学们来说&#xff0c;也没必要花冤枉…

阿里云 ACK 新升级,打造智算时代的现代化应用平台

云布道师 今天&#xff0c;能想到的或是想不到的领域&#xff0c;对容器和 Kubernetes 的需求都居高不减&#xff0c;使这项技术正在真正走向无处不在。 在 2023 云栖大会上&#xff0c;阿里云云原生产品线容器服务负责人易立关于容器服务 ACK 在本届亚运会上应用的介绍&#…

[crash] cxa_pure_virtual 崩溃分析与原理

摘要&#xff1a;工作过程中处理线上的崩溃时发现了一例cxa_pure_virtual相关的crash&#xff0c;直接看堆栈基本山很容易确认是有异步调用导致出发了ABI的异常。但是对于为什么会触发cxa_pure_virtual虽然有大致的猜测但是没有直接的证据&#xff0c;因此本文主要描述触发该类…

C/C++未定义行为的例子汇总

一、什么是未定义行为&#xff1f; 未定义行为&#xff08;Undefined Behavior&#xff09;是指C语言标准未做规定的行为。同时&#xff0c;标准也从没要求编译器判断未定义行为&#xff0c;所以这些行为有编译器自行处理&#xff0c;在不同的编译器可能会产生不同的结果&#…

ElasticSearch之cat aliases API

执行aliases命令&#xff0c;如下&#xff1a; curl -X GET "https://localhost:9200/_cat/aliases?pretty&vtrue" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下&#xff1a; alias index …