| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 807 人关注过本帖
标题:C programming language 的一个不理解的地方
只看楼主 加入收藏
加奈
Rank: 1
等 级:新手上路
帖 子:15
专家分:6
注 册:2014-10-12
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:1 
C programming language 的一个不理解的地方
C programming language 4.6关于静态变量
用 static 声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。

---被编译源文件的剩余部分。---剩余部分是什么?
2016-11-06 11:45
lisongsun
Rank: 2
等 级:论坛游民
帖 子:4
专家分:14
注 册:2016-11-6
收藏
得分:14 
1, C语言中,所有函数参数都是通过值传递的。
  传递给被调用函数的函数值存放在临时变量中。C语言中,被调用函数并不能修改主调函数的参数值,而只能修改私有的临时副本值。
  若要调用函数修改主调函数参数值,可以采用指针。

2, C语言中字符串常量以字符数组的形式储存。
  strlen(s)返回字符串常量s的长度,但不包含末尾的/0.
  枚举是一个常量整形值的列表。若没有显式说明,第一个枚举名的值为0。
  不同枚举中的名字必须乎不相同,而同一枚举中不同的名字可以有相同的值。

  枚举比#define的优势:
    a, 枚举可以自动生成常量值。
    b, 声明枚举类型变量,编译器不检查这种类型的变量中存储的值是否为该枚举的有效值,但枚举变量做此检查。
    c, 调试程序可以以符号形式打印枚举变量的值。

3,外部变量
  所有外部变量都必须定义在任何函数之外,且只能定义一次,外部变量定义后,编译程序将为它分配存储空间。函数在使用外部变量时必须声明变量,可以使用extern或者是隐含表示。
  非自动变量只能进行一次初始化操作。
  默认情况下,外部变量与静态变量的值被初始化为0;自动变量的值为未定义值,即为无效值。

4,常量表达式在编译时求值,而不是运行时求值。
  const修饰数组时,表示数组中的所有值都不能被修改。

5,自增自减只作用于变量。

6,按位运算符
  只可作用于int, char, short, long
  & ! ^(异或)<<(左移) >>(右移) ~取反

7, switch
switch表达式的值是“常量整数值”。
continue语句只用于循环语句,不用于switch语句。

8,extern
extern表明此处为外部变量声明(非定义)
用static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。
用static限定外部变量,可以达到隐藏外部变量的目的。
如果将函数声明为static,则该函数名除了对该函数声明所在的文件外,其余文件都无法访问。
static修饰局部变量,意味着不管其所在的函数是否被调用,它都一直存在。即它是一种只能被特定函数使用但一直占用存储空间的变量。
对于外部变量与静态变量而言,初始化表达式必须是常量表达式,且只初始化一次。

9, register声明只适用于自动变量和函数的形参。
无论寄存器变量是否放在寄存器中,它的地址都不可访问。

10, 预处理器中的#
形参不允许用带引号的字符串代替。但在替换文本中,若参数名以#作为前缀,那么它将由带引号的实际参数替换。
##用于连接实际参数。
2016-11-06 13:34
快速回复:C programming language 的一个不理解的地方
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013627 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved