读书笔记 一

C和C++程序员面试秘籍——董山海

前言

面试技术人员,不是看他有多深多尖端的技术,而是看他的基础是否扎实,是否有团队精神,是否具备可塑能力,是否有奉献精神,大企业缺少的不是技术人员,是综合素质人才。

技术基础决定上层建筑。

C/C++基本上是所有语言的基础,是学习的重中之重。

内容提要
C/C++程序基础、预处理、const、static与sizeof,引用和指针,字符串,位运算与嵌入式编程,C++面向对象,C++继承和多态,数据结构,排序,泛型编程,STL,算法和逻辑思维。

第一章 C/C++程序基础

你在求职时,公司会询问你的项目经验,例如你做过什么类型的项目,担任的是何种角色,以及做项目时如何与人他人沟通,等等。除此之外,当然还要考查你的编程能力。这里包括你的编程风格,以及你对于赋值语句、递增语句、类型转换、数据交换等程序设计基本概念的理解。

C++域操作符

#include 

int value = 0;
void PrintValue() {
    printf("value = %d\n", value);
}

int main(void) {
    int value = 0;
    value = 1;
    printf("value = %d\n", value);

    ::value = 2;
    PrintValue();

    return 0;
}
//运行结果
value = 1
value = 2
Press any key to continue

读书笔记 一_第1张图片

选择编程风格良好的条件比较语句

A. 假设布尔变量名字为flag,它与零值比较的标准if语句如下。

//第一种:
if (flag == TRUE);
if (flag == FALSE);

//第二种
if (flag)
if (!flag)

B. 假设整形变量的名字为value,它与零值比较的标准if语句

//第一种
if (value == 0)
if (value != 0)
//第二种
if (value)
if (!value)

C. 假设浮点变量的名字为x,它与0,0的比较如下。

//第一种
if (x == 0.0)
if (x != 0.0)
//第二种
if ( (x >= ERSINON) && (x <= ERSINON) )
if ( (x < -ERSINON) && (x > ERSINON) )//
//其中,ERSINON是允许的误差(精度)

D. 指针变量p与0的比较

//第一种
if (p == NULL)
if (p != NULL)
//第二种
if (p == 0)
if (p != 0)

读书笔记 一_第2张图片

不使用任何中间变量交换a、b的方法

//利用加减
a = a + b;
b = a - b;
a = a - b;

//利用位运算中的异或
a = a^b;
b = a^b;
a = a^b;
//Test.cpp
#include 

void SwapByOperation(int a, int b) {
    printf("Begin:%d %d\n", a, b);
    a = a + b;
    b = a - b;
    a = a - b;
    printf("End:%d %d\n", a, b);
}

void SwapByBit(int a, int b) {
    printf("Begin:%d %d\n", a, b);
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("End:%d %d\n", a, b);
}

int main(void) {
    int a = 1;
    int b = 2;
    SwapByOperation(a, b);
    SwapByBit(a, b);
    return 0;
}

C++ 和 C有什么不同

C是结构化语言,它的重点在于算法和数据结构。对语言本身而言,C是C++的子集。C程序的设计首要考虑的是如何通过一个过程,对输入进行运算处理,得到输出。对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题,这样就可以通过获取对象的状态信息得到输出和实现过程控制。

因此,C与C++的最大区别在于,它们用于解决问题的思想方法不一样。

C实现了C++中过程化控制及其他相关功能。而在C++中的
C,相对于原来的C还有所加强,引入重载、内联函数、异常处理等。C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等。

在C++中,不仅需要考虑数据封装,还需要考虑对象粒度的选择、对象接口的设计和继承、组合与继承的使用等问题。

相对于C,C++包含了更丰富的设计概念。

extern “C”

  • 告诉编译器,其声明的函数和变量可以在本模块或其他模块中使用。
  • 被它修饰的目标是”C”的,意思是其修饰的变量和函数是按照C语言方法编译和链接的。
    读书笔记 一_第3张图片

你可能感兴趣的:(读书笔记 一)