标识符命名规则 || 形参和实参 || 全局变量和局部变量的区别 || C语言中关键字 || for循环次数的控制

1.标识符命名规则:

定义

就是给类,接口,方法,变量等起名字的字符序列

组成规则

  • 英文大小写字母
  • 数字
  • $和_

注意事项

  • 不能以数字开头
  • 标识符必须是由字母下划线开头的字母下划线数字组合
2.以下不正确的说法是:C 语言规定()。
实参可以是常量,变量或表达式
形参可以是常量,变量或表达式
实参可以为任何类型
形参应与其对应的实参类型一致
解答:B
实参可以是任何类型(可以是常量,变量或表达式),但是形参却不能是表达式
实参(argument):
  全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等 , 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。      

形参(parameter):
全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。
形参和实参的区别

1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。 

2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。 

3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生类型不匹配的错误。 

4.函数调用中发生的数据传送是单向的 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变

如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。

6.局部变量和全局变量的区别

局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两个循环中都定义同名的局部变量i,而局部变量i的作用域在那个循环体内


       具体来说,全局变量和局部变量的区别如下:

1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等

2. 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区

3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了

4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量

7.C语言中的关键字
8.在for语句中,循环次数只由变量来控制的.说法是否正确?
正确
错误
解答:B
除了变量以外,for中的break语句也可以控制控制次数
9.除法运算符“/”和取余(模)运算符
取余:%
% 只用于整型的计算,后一个数不能是0,参与运算的数据可正可负。

对于x%y ,计算之后结果的正负与 x 的符号相同,如果前者是较小的数,后者是较大的数,那么,结果直接为较小的数。
除法运算符"/"。二元运算符,具有左结合性。参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型,结果为双精度实型。例如:
5/2=2,1/2=0
5/2.0=2.5 
取模运算符"%",二元运算符,具有左结合性。参与运算的量均为整型。取模运算的结果等于两个数相除后的余数。
10.以下关于 typedef 正确的描述是()
用typedef可以定义各种类型名,但不能定义变量
用typedef只是将已存在的类型用一个新的名称代替
用typedef可以增加新类型
使用typedef便于程序的通用
解答:ABD
typedef单从字面上来看,type define,类型定义,是用来定义数据类型的,不能用来定义变量
用typedef只是将已存在的类型用一个新的名称代替
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如: 
#define PI 3.1415926 
程序中的:area=PI*r*r 会替换为3.1415926*r*r 
如果你把#define语句中的数字9 写成字母g 预处理也照样带入。 

2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名

义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:

char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,

// 和一个字符变量;

以下则可行:

typedef char* PCHAR;

PCHAR pa, pb;  

这种用法很有用,特别是char* pa, pb的定义,初学者往往认为是定义了两个字符型指针,其实不是,而用typedef char* PCHAR就不会出现这样的问题,减少了错误的发生。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值