todo

c 高级语法

up:2014-10-03 11:14:33 edit:2015-04-21 01:24:00 view:1195
  1. 函数指针
    • int (* func_point)(int ,int);
  2. 返回函数指针的函数
    • typedef int (* func_point_type)(int ,int);
    • func_point_type func_func(int);
    • 不用typedef
    • int (* func_func(int))(int ,int); //定义了一个接收一个int参数的,返回一个接收两个int参数,返回值是int的函数的指针
  3. 指针数组
    • int * list_of_point[10];
  4. 数组指针
    • int (* point_to_list) [10];
  5. 动态二维数组
    • int m,n;
    • int (*array_point)[n]=(int(*)[n])new int[m*n]; (gcc可通过,vs2010不支持)
    • array_point[0][0]=10;
  6. 数据是指针的指针数组
    • int ** list_of_point_to_point =new int * [size];
  7. 关于const
    • 指向数据不可变
    • const int * x=5; 或 int const * x;
    • 指针本身不可变
    • int * const x=5;
    • const函数
    • [return-value][class]::[member-function]([args]) const{/*do something*/}
    • 这样函数里this指针是const的,即不会改变对象的属性。
    • 重载const函数,const对象自动调用。
    • const int& myData::getData() const{ return data;}
  8. c可变参数(不定参数)
    • 不定参数版Max
    • template
      T mymax (int count, ... ) {
      va_list ap;
      va_start(ap,count);

      T t=va_arg(ap,T),tt;
      count --;
      while(count--){
      tt=va_arg(ap,T);
      t=(tt>t)?tt:t;
      }
      return t;
      }
    • 调用mymax(4,1,2,3,-2)



  1. 不用第三个变量交换a,b的值
    • int a=10,b=20;
    • a += b;
    • b = a-b;
    • a -= b;
  2. 关于stl容器size()的效率
    • 有次看到人说是O(n),然后就一直自己写变量追踪个数后来今天看了头文件的源码,发现vector和map都是O(1)的实现,也就是多了函数调用而以,其它应该也差不多。
  3. 面试
    • 异常处理,内存管理(智能指针==引用亡灵?,与垃圾回收比较),算法(排序,堆,快,基数排序,查找二叉树,平衡二叉树,红黑树,DP,背包),c++继承多态原理,
    • 项目,查重(三级,注释,空行,[去除无用语句,函数调用,输入输出,变量关系,识别赋值语句],统计词频,转义词频,最大公共子串_子序列),全内存,采用gcc编译sygwin,安全,网页与判题独立,(比赛,考试,练习的得分与排名,等级控制),结果比较,部分给分,pe
    • 结构体对齐,调用方式(入栈顺序,清理,不定参数)
    • 继承,多态,virtual,stl,异常与构造函数,构造函数调用顺序
    • STL7种主要容器:vector,list,deque,map,multimap,set,multiset.
    • 虚拟继承,向上继承二义性

not in sinaapp