1.一个函数的形参是const char*,实参是可以是char*,如果一个函数的返回值是const char*,不能用char*来接收返回值
2.为什么没有静态的构造函数和析构函数?
构造函数成员函数使用现有分配构造指定的对象 - 即存在this。
static成员函数指定对象没有存储,因此没有关联的实例要构造 - 即this不存在。因此,无法指定静态构造函数。
3.为什么采用从右到左的参数方式,而不使用从左到右的传参方式呢?
一般我们命名一个变长函数时都类似于int display(int i, …);这种格式,
注意参数都是用压栈方式实现的,
这里我用反证法来举证,
假如使用从左到右的传参方式,栈顶看到的是最后一个参数,那么我怎样知道首参数是哪一个呢?
因此要想知道首参数的值,则必须要知道参数的长度.而栈里并不知道这个长度,那么就无法通过指针偏移的方式找到首参数.
如果使用从右到左的传参方式,栈顶看到的就是左边输入的首参数,因此,无论怎样的变长,都可以通过指针偏移的方式找到值.
3.linux下对正在读写的文件进行操作
(1)移动
由于Linux下的查询文件功能是根据文件的inode来实现的,所以当移动正在读写的文件时,不会造成错误;
(2)删除
文件的读写依然是成功的,删除的只是文件名,文件内容依然存在,可以通过文件恢复指令将其恢复。
可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。
5059日常总结
最新推荐文章于 2024-07-19 06:30:00 发布