博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C99的复合文字(compound literal)
阅读量:4112 次
发布时间:2019-05-25

本文共 620 字,大约阅读时间需要 2 分钟。

C99的复合文字(compound literal)

 

       在学习C语言的过程中,接触到一个有趣的东西—复合文字(compound literal)。这个东西也是一个很神奇的存在,给我的感觉和现在C++中的lambda表达式有着某种程度的相似性,怎么说呢?就是这种东西改变了以往我们对数组的使用。

       具体来说,以往我们如果要调用一个函数来处理一个数组的时候我们会怎么做呢?传递指针相信是大多数人的第一反应。传递指针的前提是这数组在我们调用该函数之前就已经创建、存在。相信应该有人已经猜到了,它有趣的是可以在函数调用时创建数组,并对其赋值初始化。原书中的描述是:能够表示数组和结构内容的复合文字(compound literal){依据这段描述,这种复合文字应该也能用于结构体?}。

它的语法规则是:

int *p;

p = ( int [] ) { 100, 200 };

在这里( int [] ) { 100, 200 };创建了一个无名的数组,而且它被用在函数调用中的样子是:

int sum(int arr[],int n);  //函数声明

sum((int [] ) {1,2,3,4}, 4);// 函数调用

这种东西能够让我们在向函数传递数组时,不必预先创建,可以随用随创建。这和C++中的lambda表达式何其的类似,它们这种概念被构建出来的目的是相似的,我需要的时候随时都能创建出我要的东西,而不必预先创建出来然后等候着我去使用。

转载地址:http://immsi.baihongyu.com/

你可能感兴趣的文章
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
极客算法训练营学习笔记(一)
查看>>
记CSDN访问20万+
查看>>
Windows 环境下Webstorm 2020.3 版本在右下角找不到Git分支切换部件的一种解决方法
查看>>
Electron-Vue项目中遇到fs.rm is not a function问题的解决过程
查看>>
飞机换乘次数最少问题的两种解决方案
查看>>
有向无回路图的理解
查看>>
设计模式中英文汇总分类
查看>>
MFC实现五子棋游戏
查看>>
WPF实现蜘蛛纸牌游戏
查看>>
单例模式
查看>>
工厂方法模式
查看>>
模板方法模式
查看>>
数据结构之队列、栈
查看>>
数据结构之树
查看>>
数据结构之二叉树
查看>>
二叉树非递归遍历算法思悟
查看>>
红黑树算法思悟
查看>>
从山寨Spring中学习Spring IOC原理-自动装配注解
查看>>