完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
解读C声明的步骤: 1、首先着眼于标识符(变量名或者函数名) 2、从距离标识符最近的地方开始,依照优先顺序解释派生类型(指针、数组和函数)。优先顺序说明如下: a、用于整理声明内容的括号; b、用于表示数组的[ ],用于表示函数的( ) c、用于表示指针的* 3、解释完成派生类型,使用 “of”、 “to”、“returning”将它们链接起来; 4、最后,追加数据类型修饰符(在左边, int、double等) int (*func_p)(double); 1、着眼于标识符。即:func_p /*/ func_p is 2、因为存在括号,着眼于括号*: /*/func_p is pointer to 3、着眼于用于整理声明内容的括号: /*/func_p is pointer to function(参数是double) returning 4、最后、解释数据类型修饰符int : /*/ func_p is pointer to function (参数是double) returning int 翻译成中文:func_p 是指向返回值为int 的函数的指针; C语言的声明不能从左往右按顺序解读;而是左右来回地解读; 基本类型和派生类型: int (*func_table[10])(int a); func_table is array(元素个数为10) of pointer to function(参数int类型) returning int 上面的表示方法叫做“类型链的表示” C的派生类型: 1、结构体 2、共用体 3、指针(指向的类型不同) 4、数组 5、函数(参数不同) 指针类型派生: 对指针进行加法运算,指针只前进 指针所指向类型的大小的距离,这一点具有非常重要的意义; “指向数组的指针”, 错误理解:数组名后不加[ ] ,不就是“指向数组的指针”吗? 的确,在表达式中,数组可以被解读成指针,但是, 这不是“指向数组的指针”, 而是“指向数组初始元素的指针” (之后就是涉及一个+1指针的跨度问题,很经典的问题) C的声明中, [ ]比*的优先级高----------这一点很重要,在分析声明过程中; C语言中不存在多维数组: int [2][3]模型如下: C语言中不存在多维数组。看上去像多维数组,其实是“数组的数组” 共用体的语法和结构体相识,但是,结构体的成员是“排列地” 分配在内存中, 而共用体的成员则是“重叠地”分配在内存中; 分析世界上最有名的程序: printf("hello world n"); 第1个参数总是传递字符串常量; 可是,在stdio.h的原型声明中, printf()的第1参数被定义为:“指向char指针” 字符串常量的类型为“char 的数组”, 因为在表达式中,所以它也可以当成 “ 指向cahr的指针”。以此,字符串常量可以传递给printf() 是很自然的事; 变量: 作为变量,它有作为“自身的值”使用 和 作为“自身的内存区域”使用两种情况; 表达式代表某处的内存区域的时候,我们称当前的表达式为“ 左值(lvalue)”, 相对的是,表达式只是代表值的时候,我们称当前的表达式为“右值” 表达式中有时候存在左值,有时候不存在左值; ”左值“这个词汇的由来: 在C以前的语言中,因为表达式在赋值的左边,所以表达式被解释成左值。“左”在英文中是left, left value 就被简写成lvalue 但在现代C中,++var这样写法也是合法的,此时var是指某处的内存区域,但是怎么看也看不出“左边”的意思。因此,左值这个词真有点让人摸不着头脑; 在标准委员会的定义中, lvalue的l不是left的意思,而是表示locator(指示位置的事物)。 |
|
|
|
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 14:05 , Processed in 0.479907 second(s), Total 66, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号