当前位置:首页 > 工业控制 > 电子设计自动化
[导读]作者:杨硕,华清远见嵌入式学院讲师。 C语言为我们定义了四种基本数据类型:整型,浮点型,指针以及聚合类型(数组和结构体等),在此基础上,我们就可以声明变量。我们平时经常说定义一个某种类型的变量,其实这样

作者:杨硕,华清远见嵌入式学院讲师。

C语言为我们定义了四种基本数据类型:整型,浮点型,指针以及聚合类型(数组和结构体等),在此基础上,我们就可以声明变量。我们平时经常说定义一个某种类型的变量,其实这样说不确切,应该说是声明变量。

变量声明的基本形式是:

说明符(一个或多个) 声明表达式列表

比如说:int a, b, c, d;

C语言中对指针的声明比较有代表性,我们来看一下:

比如声明一个指向int型的指针a:int *a;

这个语句表示表达式*a产生的结果类型是int,而我们又知道*操作符执行的是间接访问操作,所以可以推断a肯定是一个指向int的指针。

C语言在本质上是一种自由形式的语言,它给了程序员很大的空间,我们同样可以这样写:int* a,这个声明与int *a时一个意思,而且似乎更为清楚,a被声明为类型为int*的指针(实则不然),这会诱导我们这样声明三个指向int型的指针:

int* a, b, c;

也许你会很自然的以为这条语句把三个变量a、b、c都声明为指向整型的指针,但是事实上我们被它的形式愚弄了,星号实际上是表达式*a的一部分,只对这个标识符有用,a是一个指针,但是b和c都只是普通的整型而已,要声明三指针,这样写是可以的:

int *a, *b, *c;

从这个简单的例子我们可以看出C语言的声明规则多么具有迷惑性,呵呵,这也是C语言饱受批*的地方之一,但这决定与语言本身的设计哲学,我们无法改变,要想用好C语言,我们必须掌握它的语法规则。

我们再看一个例子:

int fun();

我们都知道它把f声明为一个函数,它的返回值是一个整数。

如果这样写:

int *fun();

要想推断出它的含义,我们必须知道*fun()是如何求值的。首先执行的是函数调用操作符(),因为它的优先级高于间接访问操作符*,所以fun是一个函数,它的返回值类型是一个指向整型的指针。

再看一个更为有趣的声明:

int (*fun)();

这个声明有两对括号,每对括号的含义不同。第二对括号是函数调用操作符,但是第一对只起到聚组的作用。它导致间接访问在函数调用之前进行,使fun是一个函数指针,它所指向的函数返回一个整型值。

那么现在这个声明应该很容易分析出来了

int *(*fun)();

fun还是一个函数指针,只是所指向的函数返回的是一个整型指针。

先写到这里,对C语言的声明之旅才刚刚开始,下回我们将在中级篇里讨论更有趣的话题!

“本文由华清远见http://www.embedu.org/index.htm提供”



来源:华清远见0次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分,通常嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板,事实上所有带有数字接口的设备,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整...

关键字: 嵌入式 语言 技术

语音编码器的主要功能就是把用户语音的PCM(脉冲编码调制)样值编码成少量的比特(帧)。这种方法使得语音在连路产生误码、网络抖动和突发传输时具有健壮性(Robustness)。在接收端,语音帧先被误码为PCM语音样值,然后...

关键字: 语音编码器 PCM 语言

模糊控制算法(理论知识)

关键字: 模糊控制 语言

任何一种“语言”,都是各种“语言特性”的组合。

关键字: 程序 语言 嵌入式

由于新冠疫情,口罩已经成为了一种日常用品。而日本似乎十分热衷于研究不同类型的口罩,例如为了应对夏季的“冰镇口罩”和带微型电扇的口罩,还有为了女性美观研发的“小脸美口罩”。 8月4日,据媒体报道,日本一

关键字: 口罩 日本 智能 翻译 语言

研究表明,人在老年时学习第二语言也可以改善认知功能。 虽然我们大多数人都容易学会技术,但学习语言从未如此简单。

关键字: Android 语言 verbling

航科院民用无人机检验中心在湖北武汉对易瓦特科技股份公司的EWZ-S8八旋翼无人机进行了无人机系统安全能力二级围栏检验。本次检验耗时3个多小时。检验中心检验员针对EWZ-S8八旋翼无人机进行了无人

关键字: 无人机 语言

什么是51单片机?它有什么注意事项?编程也好设计也罢,都要有遵循的规则。可以发挥自己的创新但是要顾全大局,不能随意的编程。下面分享关于51单片机编程的一些规则,希望能帮到大家,避免大家四处碰壁。

关键字: 51单片机 编程 语言

1月15日,打着中科院计算所出品、完全自主开发旗号的国产编程语言“木兰”引发广泛关注,但很快被发现是基于Python语言套壳、换皮而来的产物。 面对质疑,中科院计算所编译实验室员工、“木兰”语言研发团

关键字: 中科院 国产 木兰 编程 语言 刘雷 计算所 重罚

国产编程语言“木兰”横空出世,后续结果反转令人不齿。 近日,一则关于国产编程语言“木兰”出世的消息让人眼前一亮。据悉,“木兰”是面向智能物联应用的编程语言,由我国科研人员自主设计、开发和实现,与之配套

关键字: 中科院 木兰 汉芯 编程 语言
关闭
关闭