9.1
C语言和C++内存申请区别:
C用malloc-free、C++用new-delete
1.new和malloc的区别:
1.new是从自由存储区域开辟;malloc是从堆上开辟;
2.new的返回值类型安全;mallo返回值类型不安全;
3.new不需要计算内存的开辟大小;malloc需要计算开辟内存的大小;
4.new抛出异常(bad_alloc);malloc返回值为空;
5.new可以初始化;malloc不可以初始化;
2.指针常量、常量指针、指针数据、数组指针区别:
int *p[]; //指针数组,指针型数组,是一个数组,类型为*
int (*p)[]; //数组指针,数组型的指针,是一个指针,指向一个int []数组
const int *p; //指针是变量,指向的内容是常量(const int)
int* const p; //指针是常量,指向的内容是变量(int)
3.程序从windows系统转到linux要怎么做
1.SecureCRT与linux互相上传和下载文件
2.使用ftp软件上传windows项目到linux
3.phpstrom连接linux系统的项目
4.进程线程区别
线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。
根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行
5.文件权限
rwx 的权限数分别为:r =4 , w=2, x=1
分别是可读、可写、可执行。
6.&运算符
表示与运算符。
7.sizeof与strlen的差别
sizeof将str看作一个数组,需加上\0
strlen则将str只数字符、忽略\0
8.C++中的多态
1)静态多态:函数重载和运算符重载属于静态多态,复用函数名
2)动态多态:派生类和虚函数实现运行时多态
二者区别在于
静态多态的函数地址早绑定-编译阶段确定函数地址;
动态多态的函数地址晚绑定-运行阶段确定函数地址;
9.静态成员函数与非静态成员函数的区别
根本区别:静态成员函数不存在this指针,不能访问非静态成员变量。
10.C中的static关键字的作用
c/c++共有
修饰全局变量时,表明一个全局变量只对定义在同一文件中的函数可见。
修饰局部变量时,表明该变量的值不会因为函数终止而丢失。
修饰函数时,表明该函数只在同一文件中调用。
c++独有:
修饰类的数据成员,表明对该类所有对象这个数据成员都只有一个实例。即该实例归 所有对象共有。
用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量
11.栈和队列
栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构,
队列是一种先进先出(First In First Out)的线性表。