c易错题集------函数

五、函数

函数的定义不能被嵌套,函数的调用可以被嵌套

1.下列关于函数叙述中,错误的是

A 函数未被调用时,系统将不为形参分配内存单元。(调用结束时释放)。

B 实参与形参的个数应相等,且类型对应一致。

C 当形参是变量时,实参可以是常量、变量或表达式。

D 形参可以是常量、变量或表达式。只能是变量

2.函数调用时,当实参和形参都是简单变量,他们之间数据传递的过程是:实参将值传递给形参,调用结束时形参并不将其值传回给实参-------形不改实

函数调用时,若用数组名作为函数的参数,以下叙述正确的是

​ 若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址。数组首地址数组是第一个元素的地址。数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。

形参指针是有自己独立的存储空间,实参数组也有自己独立的存储空间

3.c语言中函数的返回值的类型是由(D)决定

A return语句中的表达式类型

B 调用函数的主调函数类型

C 调用函数时临时

D 定义函数时指定的函数类型

4.在一个函数体内说明语句后的复合语句中定义一个变量,则该变量C

A 为全局变量,在本程序文件范围内有效

B 为局部变量,只在该函数内有效

C 为局部变量,只在复合语句中有效//因为一个函数可以有多个符合语句

D 定义无效,为非法变量

5.定义一个void类型函数意味着调用该函数时,函数

A 通过return返回一个用户所希望的函数值

B 返回一个系统默认值

C 没有返回值 //是为了显式指明,程序不处理函数返回值。这是一种较好的编程规范,增加可读性之类的好处。

D 返回一个不确定的值

6.下列程序的运行结果8 17

int func(int a, int b)
{
    static int m = 0, i = 2;
    i += m + 1;
    m = i + a + b;//第一次在此函数中i= 3,m = 8
    return(m);//第二次i=12,m = 17
}
int main()
{
    int k = 4, m = 1, p;
    p = func(k, m);
    printf("%d", p);
    p = func(k, m);
    printf("%d\n", p);
}
//.data已经初始化的全局变量
.bass未初始化的全局变量

1)修饰局部变量,改变局部变量的生存周期,静态局部变量如果没有被用户初始化,则会被编译器自动赋值为0,存放在.data段

2)修饰全局变量和函数,改变作用域(作用域由原来的整个工程变为在本文件内)

3)c语言不允许在函数外对全局变量赋值

7.以下函数是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t第一个不同字符的ASCLL差值,当s>t返回正值,当是s<t返回负值

my_cmp(char* s, char* t)
{
    while (*s == *t)
    {
        if (*s == '\0')//以\0做判断条件           
        	return 0;
        ++s;
        ++t;
    }
    return *s - *t;
}

持续更新中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值