C语言 符号的不同意义

cyang Lv6

C语言的许多符号在不同的上下文环境里有不同的意义,相当于被“重载”了。如下展示了一些符号的不同意义。

static

  • 在函数内部,表示该变量的值在各个调用间一直保持延续性。类似与全局变量,区别在于作用域不同。
  • 在函数外部,表示该函数或者变量只对本文件可见。

extern

  • 用于函数定义,表示全局可见(属于冗余,因为函数名在默认情况下具有外部的链接属性,如果函数没有在调用它的转换单元中定义,编译器就会把这个调用标记为外部,让链接程序处理它)
  • 用于变量,表示它在其他地方定义(变量名和函数不同,当某个名称的定义对于当前转换单元来说是外部的,如果希望用一个名称访问当前装换单元外的变量,就必须用 extern 关键字来声明该变量,表示该名称在当前块的外部定义。之后编译器就把变量标记为具有外部链接属性,链接程序就会在名称和它引用的变量之间建立链接。如果给定块中的一个名称有 extern 声明,就不能在同一个块中定义该名称)
  • 一般而言,使用 extern 有2中方式:第一种是在 C 文件中直接声明某个其他文件中定义的函数或全局变量为 extern,从而告诉编译器这个函数或变量是在其他 C 文件中定义的;第二种是在头文件中声明某个函数或变量为 extern,然后在需要引用该函数或变量的 C 文件中包含这个头文件。第二种是比较好的方式,因为头文件只需要编写一次就可以在其他所有需要引用这些函数或变量的 C 文件中被包含,相应地如果函数定义或者变量的定义发生了变化,也只需要修改头文件一个文件就可以了,否则必须修改所有引用这些外部函数或变量的 C 文件。

void

  • 作为函数的返回类型,表示不允许返回任何值
  • 在指针声明中,表示通用指针的类型
  • 位于参数列表中,表示没有参数

*

  • 乘法运算符
  • 用于指针,间接引用
  • 在声明中,表示指针

&

  • 位的 AND 操作符
  • 取地址符号

()

  • 在函数定义中,包围形式参数表
  • 调用一个函数
  • 改变表达式的运算次序
  • 将值转换为其他类型(强制类型转换)
  • 定义带参数的宏
  • 包围 sizeof 操作符的操作数

其他

  • <= 小于等于运算符
  • <<= 左移复合赋值运算符

原文链接:本人CSDN博客

  • 标题: C语言 符号的不同意义
  • 作者: cyang
  • 创建于 : 2018-03-27 22:53:22
  • 更新于 : 2020-02-19 21:32:25
  • 链接: https://blog.cyang.tech/2018/03/27/C语言 符号的不同意义/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
此页目录
C语言 符号的不同意义