计算机考研复试C语⾔常见⾯试题
本⽂是我2021年考研时准备的复试⾯试题,现在拿出来给⼤家分享⼀下
觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好⼏次版本呢
祝⼤家都上岸
P.S. 我当初整理的时候是word,直接复制过来的话代码不会⾃动变成CSDN的代码块,所以代码我是⼀段⼀段重新标记为CSDN代码段的,这样⼤家看起来舒服点
C语⾔基础 ⽬录
1、static关键字的作⽤
1. 隐藏
当同时编译多个⽂件时,所有未加static前缀的全局变量和函数都具有全局可见性。如果加了static,就会对其它源⽂件隐藏。利⽤这⼀特性可以在不同的⽂件中定义同名函数和同名变量,⽽不必担⼼命名冲突。
1. 保持变量内容持久
如果作为static局部变量在函数内定义,它的⽣存期为整个源程序,但是其作⽤域不会发⽣改变,只能在定义该变量的函数内使⽤该变量。退出该函数后,尽管该变量还继续存在,但不能使⽤它。
1. 初始化
Static变量默认初始化为0.
对⼀个类中成员变量和成员函数来说,加了static关键字,则此变量/函数就没有了this指针了,必须通过类名才能访问。此时表⽰不依赖对象调⽤,它不与任何的对象相联系,由该类型的所有对象共享访问,故不存在this指针。
设计思想上:
C++是⾯向对象的语⾔,⽽C是⾯向过程的结构化编程语⾔
语法上:
C++具有封装、继承和多态三种特性
C++相⽐C,增加了许多类型安全的功能,⽐如强制类型转换、
C++⽀持范式编程,⽐如模板类、函数模板等
Java的⽅法重载
就是在类中可以创建多个⽅法,它们具有相同的名字,但具有不同的参数和不同的定义。
(1)封装:将数据或函数集合在⼀个类中类。
(2)继承:⼦类可以继承⽗类的⼀些数据和函数。
(3)多态:运⾏时,可以通过指向基类的指针,调⽤派⽣类中的⽅法。
意义:可以使程序有良好的扩展,并可以对所有类的对象进⾏通⽤处理。
当使⽤多态⽅式调⽤⽅法时,⾸先检查⽗类中是否有该⽅法,如果没有,则编译错误;如果有,再去调⽤⼦类的同名⽅法
A(){}
virtual void foo(){
cout<<"This is A."<<endl;
}
};
class B: public A{
public:
B(){}
void foo(){
cout<<"This is B."<<endl;
}
};
int main(){
A *a = new B();
a->foo();
}
输出是B的输出,如果改为B *a = new B();则此时输出⼀致,但这个时候不叫做多态。
A(){cout << "A Constructor!bai" << endl;}
~A(){cout << "A Destructor!" << endl;}
};
class B{
public:
B(){cout << "B Constructor!" << endl;}
~B(){cout << "B Destructor!" << endl;}
};
//基类的构造函数按照继承时声明的先后顺序从前到后执⾏,
最后执⾏⾃⼰的构造函数;析构函数则按照相反的顺序执⾏。
class C:public A, public B {
public:java面试题要背多久
C(){cout << "C Constructor!" << endl;}
~C(){cout << "C Destructor!" << endl;}
};
int main(){
C c;
}
输出是
A Constructor!
B Constructor!
C Constructor!
C Destructor!
B Destructor!
A Destructor!
如果在每⼀类中都写deal函数,则最终只能执⾏c的deal函数。指针有⾃⼰的空间
指针初始化可以为NULL
指针可以有多级指针(存在指向指针的指针)
指针初始化后可以再指向其他对象
引⽤只是⼀个别名
引⽤初始化时必须有⼀个对象
引⽤只能⼀级(没有引⽤引⽤的引⽤)
引⽤初始化后不能再引⽤其他对象
共同点:struct和class都可以定义成员和函数,都具有继承、多态。
不同点:
class默认权限是private,struct默认权限是public。
class可以声明类模板,⽽struct不可以。
模板就是实现代码重⽤机制的⼀种⼯具,它可以实现类型参数化,即把类型定义为参数, 从⽽实现了真正的代码可重⽤性。模版可以分为两类,⼀个是函数模版,另外⼀个是类模版。
函数模板:
template <class T>
T Max (T a, T b) {
return a < b ? b:a;
}
这样不⽤区分a和b是int还是double
类模板:
template <class T>
class Stack {
private:
vector<T> elems;    // 元素
public:
void push(T const&);  // ⼊栈
void pop();              // 出栈
T top() const;            // 返回栈顶元素
bool empty() const{      // 如果为空则返回真。
pty();
}
};
template <class T>
void Stack<T>::push (T const& elem)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。