函数

  • 实参的求值顺序,编译器不同而不同,printf也是(i,i++)(i,++i)(本系统:从右往左)。
  • 数组名作参数,调用:function(a),定义:function(int b[]),常用定义function(int b[],int n)来记长度,由于实际传的是指针,形参变实参也会变。
  • 多维数组,可省略第一维大小,不能省略二维及之后的大小
  • 关于存储:
    • 全局变量,从定义到程序结束有效
    • 数据存储类别分为静态存储类和动态存储类,具体4种,auto,static,register(最新c++11已废弃),extern
    • 局部变量不声明都是auto调用函数分配空间,调用结束释放,可省略auto
    • static,分配静态存储空间,编译时赋初值,之后每次调用函数保留上次调用结束的值,而auto是在每次调用时赋初值。然而还是局部变量,其他函数不能调用。
    • register,寄存器变量,为提高执行效率(多次引用局部变量的时候)将局部变量的值放在cpu的寄存器中,需要时直接取出,仍是 局部 变量,只在函数中用。一般很少用,优化编译系统能识别频繁使用的变量并放入寄存器中。
    • 一个变量只有一个存储类别
    • 单文件,extern (类型) a,在引用前,可以将a的定义写在函数之后,从声明都可使用该外部变量
    • 多文件,一个文件的外部变量A,其他文件可以声明extern A,之后便可使用
    • 外部加static,静态外部变量,其他文件用extern不能引用
  • 关于声明和定义

广义的声明包括定义。一般把建立储存空间的称为定义,不需要建立储存空间的称为声明

  • 不能int a;static a;只能static int a;
  • 关于生存期和作用域,生存期即变量存在,作用域即变量有效的文件或函数范围。只有auto和register存在性是一段时间。
  • static (类型) 函数 内部函数,只能在同一个文件中。
  • extern可省略,即外部函数,可在其他文件中用。

来源:谭浩强《c语言程序设计》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值