C语言笔记-makefile

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。

阅读更多

C++语言笔记-5

Chapter 4

  1. struct成员属性的访问方式:
    一种是通过名字或引用,另一种是通过指针。

    1
    2
    3
    4
    5
    void func(Vector c, Vector& rv, Vector* pv) {
    int i1 = v.sz;
    int i2 = rv.sz;
    int i4 = pv->sz;
    }
  2. 声明函数时,显式告知编译器将进行重写函数(override)

    1
    type func_name(type parameters) override;

    编译器会检查父类是否存在该函数。

  3. 可重写构造函数或者运算符实现“移动”功能,减少多次声明临时变量造成的内存使用。

C++语言笔记-4(堆内存和栈内存详解)

转载:堆内存和栈内存详解

预备知识—程序的内存分配

一个由C/C++编译的程序占用的内存分为以下几个部分

  1. 栈区(stack)—由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
  2. 堆区(heap)— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表
  3. 全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放
  4. 文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放。
  5. 程序代码区—存放函数体的二进制代码。
阅读更多

C++语言笔记-2

使用书籍: A Tour of C++
作者: Bjarne Stroustrup (C++之父)

Chapter 4

  1. C++传值的方式传实参,即是type function_name(type parameter);实际上是把一份副本传递给函数,因此我们修改形参(副本)不会影响主调函数的实参,并且可以将结果作为返回值使用。

    如果不想使用拷贝,想直接使用源数据type function_name(type& parameter);,如果不改变源数据,还可再加上const前缀。

1
2
3
4
T a[n];     //T[n]: n个T组成的数组
T* p; //T*: 指向T的指针
T& r; //T&: T的引用
T func(A); //T(A): 是个返回T类型的函数,接受A类型的实参。
  1. switch-case只能判断常量(short, int, long, char)。
  2. C++存在对象new()方法,但是没有自动的内存清理机制,需要手动定义清理方法~class_name(){}实现delete()功能
阅读更多

C语言笔记-pipe的使用

C语言做的每个程序都有一个独立的功能,我们可以将多个程序使用管道连接到一起。原理是将前一个的stdout –> 后一个的stdin,形成管道传输。

阅读更多