程序员面试宝典
文章平均质量分 83
欧阳海宾
这个作者很懒,什么都没留下…
展开
-
static
关键字static的意思是静态,有3个明显作用:1)在函数体内,静态变量具有"记忆"功能。即在函数被调用过程中,一个被声明为静态变量的值维持不变。 static局部变量和普通局部变量的区别:static局部变量只被初始化一次,下一次的运算依据上一次的结果值。2)在模块内,但在函数体外,它的作用域范围是有限制的。static类型的变量,是本地的全局变量。所以,可以被模块内的所有函数访问,不可以...转载 2017-10-06 12:28:41 · 612 阅读 · 0 评论 -
strlen和sizeof
strlen和sizeofstrlen函数所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含"\0")。sizeof 是C语言的关键字,它以字节的形式给出了其操作数的存储大小,操作数可以是个表达式或括在括号内的类型名,操作数的存储大小由操作数的类型决定。原创 2017-10-10 11:08:34 · 294 阅读 · 0 评论 -
explicit
C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即implicit。 隐式转换即是可以由单个实参来调用的构造函数定义了一个从形参类型到该类类型的隐式转换。编译器在试图编译某一条语句时,如果某一函数的参数类型不匹配,编译器就会尝试进行隐式转载 2017-10-08 14:47:04 · 342 阅读 · 0 评论 -
new/delete与malloc/free的区别是什么
1.malloc/free是C/C++语言的标准库函数,要包含头文件。new/delete是C++的运算符。不用包含头文件。它们都可用于申请动态内存和释放内存。但是new能够自动分配空间大小,而malloc需要计算字节数。int *p = new int[2]; int *p = malloc(sizeof(int)*2);2.转载 2017-10-07 16:34:18 · 446 阅读 · 0 评论 -
(C++)关于i++和i++的左值、右值问题
1、什么是左值和右值?左值就是出现在表达式左边的值(等号左边),可以被改变,他是存储数据值的那块内存的地址,也称为变量的地址;右值是指存储在某内存地址中的数据,也称为变量的数据。左值可以作为右值,但右值不可以是左值。因此也只有左值才能被取地址。 2、举两个问题:int i = 0;(i++)+=i; //错误(++i)+=i; //正确 int *i转载 2017-10-07 10:40:46 · 1544 阅读 · 0 评论 -
char str1[]="abc"; char str2[]="abc";str1与str2不相等,为什么
两者不相等,是因为str1和 str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区的首地址。但有些情况却不一样,程序如下: #include int main(void){ const char str3[] = "abc"; const char str4[] = "abc"; const char *st原创 2017-10-07 10:08:27 · 6608 阅读 · 0 评论 -
enum
以如下程序实例进行分析。[cpp] view plain copy#include int main() { enum{a, b=5, c,d=5,e); printf("%d%d%d%d%d\n",a,b,c,de); return 0; } //程序输出 0 5 6转载 2017-10-07 09:45:33 · 428 阅读 · 1 评论 -
volatile
学习C关键词的时候,我们看到了一个新面孔——volatile。在程序员面试宝典中提到“关键字volatile的面试例题是考查嵌入式编程”,中间有一段解析:回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难转载 2017-10-06 22:34:10 · 289 阅读 · 0 评论 -
ASSERT()
断言(ASSERT)的用法 我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句: if(假设成立){转载 2017-10-07 09:37:35 · 2642 阅读 · 0 评论 -
const
const和define的区别#define RADIUS 100;const float RADIUS= 100; (1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检转载 2017-10-06 17:02:05 · 280 阅读 · 0 评论