1.返回值
C中:如果函数未指定返回值类型,则默认为int
c++中:如果一个函数没有返回值,返回值类型必须指定为void
2.参数列表
C中:如果函数没有指定参数列表,则默认可以接受任意多个参数
C++中:有严格的类型检测,没有参数列表的函数默认为void,不接受任意参数
3.缺省参数(即给参数一个默认值)
C:不支持
C++:支持(如果没有指定实参则使用缺省值,有则使用指定实参)
1.默认实参必须在参数列表的结尾
2.默认参数只能出现在函数声明或者定义二选一中
3.缺省值必须是常量或全局变量
4.缺省参数必须是值传递或者常参传递
4.函数重载
C:不支持
C++:支持在同一作用域中存在几个功能类似的同名函数,但参数列表(参数个数、类型、顺序)不同
5.std::vector::at 总是做边界检查 ,std::vector::operator[] 不做边界检查
6.字符串“a+b=20\n”的长度是
答案:7
字符串长度(strlen),内存空间大小(sizeof),‘a’,’+’,‘b’,’=’,‘2’,‘0’,’\n’
7.在 C 语言中,C99除外,一维数组的定义方式为:元素类型 数组名[E]; E 为?
答案:整型常量表达式,整型表达式不可以,当然定义x和y的时候加上const是可以的
int x = 2, y = 3;
int a
[x+y];
8.若使用数组作函数实参,则以下正确的说法是?
A.必须在主调函数中说明此数组的大小
B.实参数组类型与形参数组类型可以不匹配
C.在被调用函数中,不需要考虑形参数组的大小
D.实参数组名与形参数组名必须一致
答案:C
A选项:不一定要说明大小
B选项:实参和形参,类型和顺序必须一致
C选项:因为传数组都是只传一个地址过来,而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身,所以在函数体内部可以改变实参的值
9.C语言的 sizeof 是运算符也是关键字