你好, 欢迎回来｡ 在这节课里, 我想讲的是常数弦｡
我们知道, 字符串文字或字符串常量位于双引号内｡
但变量本身又如何呢｡ 如何确保变量永远不会更改该值？
这被称为常数｡
所以在你的程序中,
当你不想变量的值改变时, 常量字符串有时是必要的｡
例如, 如果我们要计算一个圆周, 我们会做3｡
直径14159倍｡
3. 14159是一个常数｡ 永远不会变｡
它代表π｡
所以如果我们不使用这个幻数, 而是使用一个变量, 并确保这个变量永远不会改变,
那就太好了｡
因此, 有充分的理由使用符号常量, 而不是每次都键入数字｡
首先, 一个名字比一个数字能告诉你更多｡
欠的等于0｡
015乘以房屋价值远不如欠款等于税率乘以价值有意义｡
所以我们希望变量名代表永远不变的数字｡
如果你通读了一个很长的程序, 第二个视觉版本的意义就简单多了｡
查看代码并理解0要容易得多｡ 015代表税率｡
假设你已经在多个地方使用了一个常量,
并且有必要改变它的值, 你必须在程序中的每个地方都改变这个值, 而不是只在你定义这个常量的一个地方改变｡
我在前面提到幻数的时候就谈到过这个问题｡
这就是我们所说的｡
每当你看到一个数字在程序中使用,
它不是存储在一个变量, 它通常是最好的创建该数字, 并把它放在一个常数｡
因为如果你多次使用它, 而那个变量改变了,
你所要做的就是改变它一次｡
您不必在使用它的任何地方更改它｡
因此, 避免使用幻数, 使用常量｡
在c语言中定义常量的一种方法是使用来定义预处理器指令｡
所以这个预处理器指令让你定义常量, 我在几个程序里用过它.
我现在试着解释一下｡
如果你想计算一个税率,
而且它是一个常数, 你可以在前面加上一个磅.
我们知道这是一个预处理器指令, 因为有一个磅号, 然后我们会说名称,
然后是值｡
当您的程式编译时, 值0｡
015会被替换成所有你用过的税率, 就像一个变量,
但它实际上不是变量｡
您不能为该对象分配任何其他值｡
如果它是一个变量,
你可以给它赋值, 但在这个例子中不行, 因为它是一个预处理器｡
所以预处理器指令说你不能给数据赋值, 你用define来指定它｡
请注意它的语法｡ 您有一个磅, 后面跟有定义的关键字｡
然后, 你就有了自己的名字｡
我们没有使用任何赋值运算符｡
我们只有名字, 空格和值.
因此, 要给定义赋值, 只需要一个空格｡
结尾处没有分号｡ 这不是声明｡ 非常具体｡
所以这里发生的是编译时替换, 这些预处理器发生｡
预处理器在编译器记忆之前运行｡
预处理器会运行, 它会看到这些定义的进位根｡ 然后在每一个税率的地方, 它只会输入0｡
015为编译器｡
定义的语句可以出现在程序中的任何位置｡
根本就没有地方定义这回事｡ 一旦有了定义, 任何人都可以使用它｡
最佳实践或惯例通常是将定义的语句放在程序的开头,
或者放在一个包含文件中, 如果你想在多个源文件中共享, 但你不必这么做｡
因为它是在预处理器上运行的,
它没有任何作用域, 它没有任何局部或全局变量｡
你可以把它放在任何地方｡
在程序中的任何地方都可以看到它, 即使它在定义之前就被使用了｡
定义的语句也非常好, 因为它们有助于使程序更易于移植｡
有时候你可以使用一个定义好的语句, 当程序运行的时候, 把它和你正在运行的特定的计算机联系起来,
它就会得到那个值｡
定义的语句也可以用于字符和字符串常量, 而不仅仅是数字｡
如果我们想做这样的事情, 完全正确｡
您只需将单个字符括在单引号中｡
如果你想输入一个完整的字符串, 你只需要把它放在双引号里｡
这就是这个“哎呀”的作用｡
另一种可以创建常量并查看的方法是更新的机制｡
C90基本上是以另一种方式添加的, 即提供常量修改器｡
您可以使用constant保留字, 将变数的宣告转换为常数的宣告｡
这将使你永远无法改变这个变量｡ 所以你要做的就是说const,
然后是数据类型的名称, 然后是变量的名称｡
在这个例子中, 它的作用是使months成为12的符号常量｡
我们称它为变量并不是因为变量是可以改变的, 这就是它被称为变量的原因｡
你有常数或变量,
而常数在月份中不是变量, 不发生变化｡
常数使月份成为只读值｡
您可以显示月份并在计算中使用｡ 您不能更改月的值｡
因此, 如果不希望数据发生变化, 常量是很重要的,
而且它们还可以取代幻数｡
Const是一种较新的方法, 比使用define更灵活｡
它允许您声明类型｡
它还可以更好地控制程序的哪些部分可以使用常量｡
所以你应该尽可能的使用constant, 但是你会看到很多程序使用defined,
因为它是第一种机制.
另外, 还有第三种方法可以创建常量,
那就是使用枚举｡ 记住, 我们讨论过枚举｡
枚举是一种创建自己类型的变量的方法, 并且只有特定的数据与之关联｡
不能更改枚举的值｡
一旦定义了枚举, 它就必须具有这些值｡
它可以有不同的值,
但它仍然是一种创建符号常量的方法, 不是完整的方法, 而是一种方法｡
此外, 使用const, 可以初始化字符数组并将其声明为常量,
这是处理标准消息的好方法｡
所以如果你说const char message等于the end of
the world is nigh, 这将把消息声明为常量,
并且它被保护起来, 在程序中永远不会被显式修改｡
任何试图通过执行str复制来修改消息的尝试都将导致编译器发出错误消息｡
现在, 您可以将其用于一个标准消息,
该消息可以作为输出显示在程序的各个部分中｡
如果像我提到的那样, 在许多地方使用标准消息,
那么定义标准消息的技术就特别有用｡
防止在程序的其他部分意外修改此类常量, 就像幻数一样｡
所以你想在程序中使用常量, 有两种方法, 使用define和constant关键字.
请注意这一点｡
您可能会在下面的一些示例中看到它｡
-谢谢—谢谢