c语言:复合文字

复合文字的意义,相当于是在C语言中,为数组类型定义了一种类似于8之于int,‘w‘之于char一样的常量类型,所以从C99之后,可以在一些地方使用复合文字来代替数组使用。

复合文字的声明

(int [3]){1,2,3};  //一个复合文字,定义类似于数组的定义(int []){1,2,5,6,8}; //类似于数组,复合文字的定义也可以省略大小

因为复合文字没有名称,所以,不能在一个语句中创建,而在另一个语句中使用。必须在一个语句中创建的同时使用他们。

一种可能的使用方法是在创建的同时使用指针来保存地址 int *p=(int []){1,2,5,4}; 这样p指针指向的是复合文字首字符的位置,此时p[0]=1,p[1]=2.......

另外,复合文字也可以作为函数参数传递。

二维复合文字的定义

(int [2][3]){{1,2,3},             {7,5,3}};
时间: 2024-10-07 06:33:09

c语言:复合文字的相关文章

C语言复合字面量的使用

C99添加的特性,复合字面量(composite literal).一旦熟悉并使用,便会体会到简洁强大的表达. 所谓字面量就是固定数值的表示.数值和字符串类型都有字面量的表达.如: // 100, 1.23f, "literral" 都是字面量 int x = 100; float y = 1.23f; char* s = "literral"; 可看到字面构建的同一时候就能够复制给变量使用.既然是固定数值,那么在初始化的时候就能够构建. 那么复合字面量是几个意思的

保护数组内容、复合文字

1.使用const可以对数组函数提供保护,可以阻止函数修改调用函数中的数据.总之,如果函数想修改数组,那么在声明数组参量时就不要使用const.如果函数不需要修改参量,就需要加const. 2.指针和多维数组.(267).变长数组(273) 3.复合文字 例如:(int [2]) {10,20}这是一个复合文字,它表示一个包含两个int值得无名称数组. (int [3]){20,30,40}有3个元素的复合文字. 通过指针保存复合文字的位置:int * pt1; pt1=(int [2]) {1

复合文字

123, 3.14, 'X', "hello"都是复合文字 (int [2]){10, 20}; // 一个复合文字, 创建了一个包含两个int值的无名称数组 (int []){10, 20}; // 自动计算元素数目 int * ptr; ptr = (int [2]){10, 20}; int (* ptr)[4]; ptr = (int [2][4]){{1, 2, 3, -9}, {4, 5, 6, -8}}; // 复合文字类型是int[2][4]

复合文字(Compound Literals)

复合文字(Compound Literals) 阅读代码时发现了这行 1 setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&(int){1},sizeof(int)); 发现之前没有见过这种写法 1 &(int){1} 上网搜索发现Compound Literals是c99添加的新特性,gcc在c90和c++中也支持此种特性,但在c++中的语义有所不同. 官网上举的例子是: 假如一个结构体的定义如下: 1234 struct { int a; char b[

【思考与总结】关于语言和文字的表达能力

1. 表达强调 记得在高中的时候语文课上学到过,语言在表达强调的时候应该适当的调整语序. 例如:“你竟然杀了他!” 和 “他竟然被你杀了!”,前者强调的是“你”,后者强调的是“他”. 用到日常生活中觉得妙用无穷,很多时候都可以用到. 但实际使用时,并不应只是语序上的变化,更应该注意内容上的先后. 例如在委婉或铺垫的表示一件事的时候,应该注意强调最终需要表达的事物,做到开门见山. 错误的例子: A: 我最近睡眠不好,明明每天都睡好久了呀>_< B: 睡太久会导致睡眠质量下降. A: 那怎么办呢?

Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au

1.1. Overview概论 支持母语优先的战略性产品,主要是针对不想以及不愿使用普通话拼音方案的输入法的时候,就需要有一个自己方言的输入法. 现有输入法绝大部分都是基于普通话语言拼音实现的,少部分得到广泛应用的方言输入法是粤语输入法,而我们大部分人是其他方言为母语的. 存在一个大脱节,所以搞了输入法,以方言为基础核心.. 1.2. App scence应用场景 不想以及不愿使用普通话拼音方案的输入法..以及不能很好使用普通话拼音的输入法.. 企业内部加密文档使用,使用自定义拼写规则拼写,保密

OC语言--复合与继承

1. 复合 1.0 复合与继承 ->描述类与类或对象与对象之间的关系有两种方式:1.继承  2.复合: ->继承可以定义一个具有父类所有功能的新类. ->复合,对象可以引用其它对象. 区别: ->复合:has-a  Car has a tire(包含关系) ->继承:is-a a Male is  a Person (隶属关系) 1.1 复合的基本语法示例 #import "Tire.h" #import "Engine.h" @int

Java千问:关于Java语言复合赋值运算符的两个问题,快来瞧瞧!

我们知道,在Java以及很多高级编程语言当中,都有一种运算符叫做复合赋值运算符.复合赋值运算符由两个符号组成,它所能完成的运算操作也分为两步:第一步是运算,第二步是赋值.比如说:上面的这两条语句相当于但是,如果碰到下面这样的情况,a的值该应该是多少呢?有人认为应该按以下方式来计算,因为我们都知道,在四则运算规则中,遵循"先乘除,后加减"的原则按照这样的方式来计算,得到a的值应该是7,但实际运行程序所得到的结果是8.这是为什么呢?就是因为复合赋值运算符在完成运算的时候,遵循一个规则:把&

GO语言复合类型01---指针

package main /* %T 类型占位符 %v 值占位符 %p 地址(指针)占位符,只有地址才能替换%p &value 对值取地址 *addr 对地址取值 **int 指向int型指针的指针 作用:函数传参时,传递指针叫引用传递,值传递是拷贝式的,对被传参数的修改是不会改变本体的,想要改变本体只能是引用传递 */ import "fmt" //指针就是地址 //&value 对值取地址 //*ptr 对地址取值 func main021() { //声明变量a时