面试笔记2

    xiaoxiao2021-03-25  61

    《C/C++程序员面试宝典》学习笔记。

    自我评价,缺点也要说,

    因为认识自身的不足,也是应该具备的,

    基础数据类型分为,整数型,浮点型,void型,

    整数型,用来表示整数,字符,布尔值,

    一般来说,short代表半个机器字长,int代表一个机器字长,long代表一个或二个机器字长,

    4000UL,代表4000是无符号数,长整型,

    浮点型由整数和小数两部分组成,

    浮点常数只有十进制一种形式,

    浮点常数默认为double,

    常量本身没有地址属性(除字符串常量等),所以常量只能用作右值,

    在所有的优先级中,单目运算符,条件运算符,赋值运算符,是从右至左结合的,

    其它都是从左至右结合的,这个总结不错,好记!

    前自增自减操作的优先级大于赋值运算符=,

    后自增自减操作的优先级小于赋值运算符=,

    声明,是表明变量的类型和名称,

    定义是为变量分配存储空间,

    存储类型,

    自动,auto,

    寄存器类型,register,直接使用寄存器,而不是再分配一个空间,

    静态类型,static,只能在它的作用范围内使用,

    外部类型,extern,使用的前提是全局变量,

    如果一个全局变量不想被其它文件使用,就声明为static的,

    匈牙利命名法,

    for循环更多用于遍历,

    while和do-while更多用于状态判断,

    break用于结束最近的while,do-while,for,switch,

    continue,是跳出当前循环的,一次!!!

    switch,括号中的内容,至少其结果是一个整数,

    递归算法的运行效率相对较低,

    汉诺塔,

    对标准输入输出设备的输入输出简称为标准I/O,

    对外存磁盘文件上的输入输出简称为文件I/O,

    对内存中指定的字符串存储空间的输入输出简称为串I/O,

    C++文件流相关内容,不熟悉啊,

    像通信交换机和路由器这类长期运行过得交互式系统,必须将90%的程序代码用于实现错误检测和错误处理,

    指针函数,本质是函数,

    只是说明这个函数的返回值是一个指针,

    this指针,很多时候是编译器隐式的帮我们插入的,

    指针是一个实体,而引用仅仅是一个别名,

    引用开始初始化,之后不可变,这点引用本质分析的时候,也讲过,

    面向过程,程序=算法+数据,

    面向对象,程序=对象+消息,

    面向对象,封装,继承,多态,

    实例化的类,存储在内存的堆中,

    而结构体存储在栈中,

    结构执行效率高些,

    类的静态方法只能访问类的静态成员,

    有3种情况会使用copy构造函数,

    1,一个对象以值传递的方式传入函数体,

    2,一个对象以值传递的方式从函数返回,

    3,一个对象需要通过另外一个对象进行初始化,

    这里正好把我之前的学习,进行了一个小的总结,不错!

    静态函数没有this指针,只能访问静态变量,

    之前知识点,换个说法,

    十进制转二进制,还用到了STL,怪不得写起来这么舒服,

    字符串转换为整数,

    全局对象的构造函数会在main()函数之前执行,

    外部变量虽然属于静态存储方式,但不一定是静态变量,

    全局变量存储在静态数据区,

    int (*s【10】)(int),

    这是什么,真的很容易迷糊人啊,

    这是函数指针数组,

    这么来分析吧,首先这是一个数组,肯定的!

    扣掉数组的括号,下面的部分,一眼就看出来是函数指针,

    所以结果就是函数指针数组,

    这个有意思,又来了,

    这个题,感觉和嵌入式关系好紧密,看看~,

    程序改错题,很多细节问题,

    int main() { //这个题目要逆序字符串 char *src = "hello world"; char *dest = NULL; int len = strlen( src); dest = (char *)malloc( len+1); char *d = dest; char *s = &src[len-1]; while( len--!=0) *d++ = *s--;//这里是要逆序,s--,我敲成了s++, *d = 0; //这里要加个结尾符,忘记了 cout<<dest<<endl; system("pause"); return 0; }

    比较标准的strcpy和strlen函数实现,

    这个题不错,为什么这么说呢,

    以前通过交换函数,了解到了形参与指针的区别,

    具体到这里,str开始被设置为NULL,

    通过函数传参,str里面存的值,被丢给了形参,

    形参在内部malloc过程中,又被赋予的新的值,

    但是这个新值与str没关系,str还是NULL,所以strcpy是错的,

    如果没记错,用字符串给【字符数组】和【字符指针】进行赋值,是不一样的,

    如果把这个题目中的p改为字符指针,就可以运行了,多想想吧,

    内存申请,要判断成功与否,使用完毕要释放,最后要置NULL,否则容易野指针,

    二级指针,看的还是少了,

    没有合适的内存,所以出错,

    这个题,算是我目前薄弱的地方,

    第一个错误是,超出表示范围,又变为0,从而导致死循环,

    第二个错误是,超过了数据的表示范围,导致越界,

    sizeof()讲解,

    只能测试出静态数组的大小,

    对于动态分配的,通过函数传参得到的数组,一般都得到的是指针的大小,比如我的机器就是4,

    我感觉讲解是对的,可是我没有加const,也通过了,可能还有其它方面的愿意吧,

    编程实践题,看看就行,不想写,

    这种题,不太好想出来,还是记住的好。

    ps:abs是求绝对值函数,头文件是#include <stdlib.h>

    这个问题很实在,

    atol();

    头文件stdlib.h

    把字符串转换为长整型,

    后面还有一堆,智力测试,逻辑测试,感觉考这比较少,闲的时候,看看,

    转载请注明原文地址: https://ju.6miu.com/read-38528.html

    最新回复(0)