《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
把字符串转换为长整型,
后面还有一堆,智力测试,逻辑测试,感觉考这比较少,闲的时候,看看,