C是只能使用标量的语言
来源:互联网 发布:淘宝宝贝怎么编辑尺寸 编辑:程序博客网 时间:2024/06/10 22:43
对于标量(scalar)这个词,大家可能有些陌生。
简单地说,标量就是指char、int、double和枚举型等数值类型,以及指针。相对地,像数组、结构体和共用体这样的将多个标量进行组合的类型,我们称之为聚合类型(aggregate)。
早期的C语言一度只能使用标量。
经常听到初学者有以下的提问:
if (str == "abc")
这样的代码为什么不能执行预期的动作呢?确实已经将“abc”放到了str中,条件表达式的值却不为真。这是为什么?
对于这样的疑问,通常给出的答案是“这个表达式不是在比较字符串的内容,它只是在比较指针”,其实还可以给出另外一个答案:
字符串其实就是char类型的数组,也就是说它不是标量,当然在C里面不能用==进行比较了。
C就是这样的语言,一门“不用说对于输入输出,就连数组和结构体也放弃了通过语言自身进行整合利用”的语言。
但是,如今的C(ANSI C)通过以下几个追加的功能,已经能够让我们整合地使用聚合类型了。
结构体的一次赋值
将结构体作为函数返回值传递
将结构体作为函数返回值返回
auto变量的初始化
当然,这些都是非常方便的功能,如今已经可以积极地使用了(不如说应该去使用)。可是在早期的C语言里,它们是不存在的。为了理解C语言的基本原则,了解早期的C语言也不是什么坏事。
特别要提出来的是,即使是ANSI C,也还不能做到对数组的整合利用。将数组赋值给另外一个数组,或者将数组作为参数传递给其他函数等手段,在C语言中是不存在的。
但是,因为结构体是可以被整合利用的,所以在实际的编程中,应该积极地使用其可用的功能。直到现在,还经常能看到使用memcpy()来进行结构体一次赋值的例子,真是做无用功。如果想要复制结构体,还是让我们使用结构体一次赋值这个功能吧。
本文所属图书 > 征服C指针
- C是只能使用标量的语言
- math库的操作对象只能是标量
- C语言标量类型
- 为什么C语言中使用的地址是假的
- linux 内核是使用c语言写的
- 【滤波算法】【C语言】(二)标量Kalman滤波的过程分析和证明及C实现
- C语言的基本单位是
- “TC(turbo c)及Visual c++是被广泛使用的c语言” ? !
- C语言“#”的使用
- C语言的栈是静态的
- 我们使用标量
- 指针是C语言的灵魂
- C语言是没有布尔类型的!
- 经考证,C语言是女的!!!
- C语言是实现函数的重载
- 指针是C/C++语言的特色
- typeof关键字是C语言的应用
- C语言只能在开头定义变量?
- 在世界坐标系中放置物体SetTransform函数
- quagga 中 命令框架
- 如何学习IOS
- 设计模式之装饰模式(Decorator)
- java学习笔记(一)
- C是只能使用标量的语言
- [日常学习]灵感来自MergeSort的求逆序数...
- maven2下pom.xml的json-lib的配置
- myeclipse使用本地jdk
- POJ-3228-Gold Transportation
- HDU 1213 How Many Tables
- or1200下Raw-OS学习(仿真环境篇)
- OpenVPN中的几个和连接相关的Timer解析
- 数据结构练习题---先序遍历二叉树