c语言中,函数形参和实参必须相同么
可以相同但也可以不相同 在程序执行的过程中,实参的作用域是主函数,只要程序没有停止,实参一直有效;形参是定义函数是引入的参数,系统只在该函数被调用时分配临时内存,当自定义函数执行完后,用于临时储存形参的空间将被释放。所以即使形参和实参的类型,名字完全一样,系统也能够把它们区分开。即可以完全一样。 函数的形参和实参具有以下特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生“类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化
C语言中逻辑运算符“&&、||、!”的用法是什么
&&,表示两边的条件成立才行,如我爱你&&你爱我,同时成立的话就容易走到一起。||,表示两边有一个条件成立就行,如我不爱你||你不爱我,只要有一个不成立,就不可能走到一起!,表示相反,如!男,就是非男,即表示女
在C语言的if语句中,用做判断的表达式是什么表达式
一般情况下这个是选逻辑表达式的。因为if是逻辑判断,但如果放在c和C++语言中,所有非零运算结果均识为true,不须强制转换,所以这里选d是正确的。但是在其他语言中是不正确的。
它主要考查的内容就是,C/CPP中并没有真正的布尔值,只是将非零数认作false而已。所以你可以理解为if是判断非零数即可,或者理解为其它。实际上,在C/CPP中的布尔值是用int表示的。也就是16位进制数表示,并不是单纯的一个bit。
如int a =5;if(a) 语句块; 该代码在C/CPP中是合法的,但是C#中是不合法的,无法通过编译器编译。
所以若在C/CPP中选逻辑表达式时,很明显算术达式是不能成立的。
而关系表达式的结果就是逻辑值(也可以将逻辑值认为是逻辑表达式)。
比如int a=5, b=6;a>b是关系表达式,结果是逻辑值false,但false可以看作是逻辑值,也可以看作是逻辑表达式。
而a-b则是算术表达式,三者均可以做为if的判断条件。
所以即使在C#语言中,严格区分的情况下,关系表达式也是被认为可行的,而逻辑表达式也是可以得到逻辑结果的。所以这里应当是选择了做任意表达式。
在C语言中什么是合法标识符,什么又不是合法标识符
那你首先得知道什么是标识符和其他高级语言一样,在C语言中用来表示对变量,符号常量,函数,数组,类型等数据对象命名的有效字符序列统称为标识符.简单地说,标识符就是一个名字.在C语言中,规定标识符只能由 字母 , 数字 , 下划线组成, 且第一个字符必须为字母或下划线.合法的标识符如下:sum,average,_total,Class,day,month,Student,Student_name,tan,louts_1_2_3,BASIC,li_ling等非法的标识符如下:M.D.John,#123,3D45,a>b等补充:(1).标识符只能由字母、数字和下划线三类字符组成(2).第一个字符必须是字母(第一个字符也可以是下划线,但被视作系统自定义的标识符)
(3).大写字母和小写字母被认为是两个不同的字符,如A和a是两个不同的标识符 (4).标识符可以任意长,但只有前32位有效。
有些旧的C版本对外部标识符的限制为6位。
这是由于链接程序的限制所总成的,而不是C语言本身的局限性(5).标识符不能是C的关键字