首页 > 其他分享 >初始化C语言中的复杂声明

初始化C语言中的复杂声明

时间:2024-01-11 16:13:23浏览次数:31  
标签:初始化 函数 int void float C语言 char 声明 指针

int *( *( *arr[5])())(); 

float ( * ( *b()) [] )(); 

void * ( *c) ( char, int (*)()); 

void ** (*d) (int &, char **(*)(char *, char **));

float ( * ( * e[10]) (int &) ) [5];

上一篇我们分析过这些声明表示什么意思,今天我们初始化下这些声明

int *( *( *arr[5])())();  

1、看下最外面一层是一个函数,没有参数,函数返回一个int*类型的指针

int a=1;
int* f1(){
  return &a;
}
2、往里面看还是一个函数,返回一个指针,指向外面的函数
 int *(*f2())(){
  return &f1;
 }
3、再往里看是是一个数组,每一个元素都是指针,指向外面的函数
int *( *( *arr[5])())() = {&f2};

 

float ( * ( *b()) [] )();  

1、看最外面是一个返回float的函数
float f1(){
  return 1;
}

2、再往里面看是一个指针数组,其中的每个指针指向外面的函数

float  (*arr[])()={&f1}

3、再往里面看是一个函数,函数返回一个指针,指向外面的数组
float ( * ( *b()) [] )(){
  return &arr;
}

 

void * ( *c) ( char, int (*)());  

1、看最外面是一个函数,函数返回一个void *类型,函数有两个参数

void * f(char p1,int (*p2)()){
  reurn (void*)1;
}

2、看里面是一个指针,指向外面的函数
void * ( *c) ( char, int (*)())=&f;

 

void ** (*d) (int &, char **(*)(char *, char **));

1、看最外面是一个函数,函数有连个参数,函数返回的是一个void **类型的数据
void* a=(void*)1;

void ** f1(int &, char **(*)(char *, char **)){
     return &a;
 }
2、里面是一个指针,指向外面的函数
void ** (*d) (int &, char **(*)(char *, char **)) = &f1;

 

float ( * ( * e[10]) (int &) ) [5];

1、看最外面是一个数组,数组的没一个元素都是float类型

float arr[5]={1};

2、里面看是一个函数,该函数返回一个指针,指针指向外面的数组
float (*f1(int &))[5]{
 return &arr;
}

3、再往里面看是一个数组,数组的每一个元素是指针,指针指向外面的函数
float ( * ( * e[10]) (int &) ) [5] ={&f1};

标签:初始化,函数,int,void,float,C语言,char,声明,指针
From: https://www.cnblogs.com/fuyun2000/p/17958793

相关文章

  • C语言int * (* (*fp1) (int) ) [10]声明是啥意思呢?
    intaa一个int类型的变量int*pp是一个指针变量,指向int类型对象const关键字,除非右边是一个类型说明符,那么它作用于该类型说明符,否则作用于左边的符号constint*p这里const右边是int类型说明符,所以作用于int,a是一个指针变量,指向const的int类型变量*p=1这样使用将会报错,因为指......
  • 【K8S系列】快速初始化⼀个最⼩集群
      序言走得最慢的人,只要不丧失目标,也比漫无目的地徘徊的人走得快。文章标记颜色说明:黄色:重要标题红色:用来标记结论绿色:用来标记一级重要蓝色:用来标记二级重要希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流写在前......
  • [Cisco ASAv] 思科自适应安全虚拟设备 (ASAv)部署与初始化配置(含ASDM)
    CiscoASAv是什么设备?CiscoASAv(AdaptiveSecurityVirtualAppliance)是思科公司提供的一种虚拟化网络安全解决方案。它是基于CiscoASA(AdaptiveSecurityAppliance)硬件防火墙的软件实现,旨在提供类似于物理ASA设备的网络安全功能。ASAv以虚拟机(VM)的形式部署在虚拟化平台上,如VMwar......
  • 考研408之C语言基础学习记录
    考研408之C语言基础学习记录汇总前言这篇文章是我决定考研后写下的C语言基础学习记录,因为在此之前我有过Java项目开发的相关经验,对基础语言的学习也有一些心得,所以学习C语言时也只是快速过一下语法重点,并进行记录总结。这里只是第一次学习C语言基础进行的知识总结,未涉及到刷题......
  • go的gin框架学习以及初始化---安装篇
    1.编辑器使用vscode设置中文,加载go语言相关插件  https://code.visualstudio.com/2.下载go运行环境  https://go.dev/dl/3.新建项目目录binpkgsrc(项目目录可存放多个项目) 每个项目文件下必须要有go.mod文件4.引入gin如果超时先设置goenv-wGO111MODULE......
  • js变量声明
    var声明会被拿到函数或全局作用域的顶部,位于作用域中所有代码之前。这个现象叫作“提升”3(hoisting)。提升让同一作用域中的代码不必考虑变量是否已经声明就可以直接使用。在实践中,提升也会导致合法却奇怪的现象,即在变量声明之前使用变量。下面的例子展示了在全局作用域中两段......
  • 【C语言高阶篇】结构体 —— 什么是内存对齐?
    (文章目录)前言  <fontcolor=green>......
  • C语言爬虫程序采集58商铺出租转让信息
    为了找到一个好店铺好位置,往往要花费很大精力和财力过去寻找,就有有某些出租平台但是一个个查找下来也是十分麻烦,所以我利用我们的C语言基础,给大家写个商品转租的爬虫程序,让找店铺不在那么费时费力,至少获取信息比自己单个来的更容易。importrequestsfrombs4importBeautifulSoup......
  • 【C语言】函数栈帧的创建和销毁
    1、什么是函数栈帧我们在写C语言代码的时候,经常会把一个独立的功能抽象为函数,所以C程序是以函数为基本单位的。那函数是如何调用的?函数的返回值又是如何待会的?函数参数是如何传递的?这些问题都和函数栈帧有关系。函数栈帧(stackframe)就是函数调用过程中在程序的调用栈(callstack)所......
  • 通讯录(动态增长版本)——《初学C语言第52天》
    contact.h////此通讯录为静态的版本(设置多少量就是多少,量的大小无法调整)////动态版本:需要多少就给多少,不够用了就开辟新空间,多了就自动减少////文件版本:动、静两种只要退出通讯录,保存的信息就消失了,而文件版本会依旧保存#define_CRT_SECURE_NO_WARNINGS1#define MAX100#define......