计算机基础知识01

  1. const type *p; // 一个不能修改其指向对象的type型指针
      type * const p; // 一个不能修改其自身指向位置的type型指针


    2.指针
    1、int(*p)[4];------ptr为指向含4个元素的一维整形数组的指针变量(是指针)
    2、int *p[4];-------定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)
    3、int(*)[4];--------实际上可以看作是一种数据类型。也就是第一个(int(*p)[4];)中定义的p的数据类型
    其实你要看这种到底是什么,就是要看他最先和谁结合。 比如1中p先与*结合,那就说明p本质是一个指针;而2中p先与后面的[4]结合,说明他本质是一个数组。再慢慢理解。


    数组指针是指向数组首元素的地址的指针,其本质为指针;
    指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针),其本质为数组。

    3.运算符优先级:括号,下标,->和.(成员)最高;
    单目的比双目的高;
    算术双目的比其他双目的高;
    位运算  高于  关系运算;
    关系运算  高于  按位运算(与,或,异或);
    按位运算  高于  逻辑运算;
    三目的只有一个  条件运算,低于逻辑运算;
    赋值运算仅比  ,  (顺序运算)高。

    4.ANSI C标准中有几个标准预定义宏(也是常用的):

    __LINE__:在源代码中插入当前源代码行号;

    __FILE__:在源文件中插入当前源文件名;

    __DATE__:在源文件中插入当前的编译日期

    __TIME__:在源文件中插入当前编译时间;

    __STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1;

    __cplusplus:当编写C++程序时该标识符被定义。


    5.形式参数:在声明和定义函数时,写在函数名后的括号中的参数。
    实参是调用参数中的变量,行参是被调用函数中的变量。

    6.enum weekday { sunday, monday, tuesday, wednesday, thursday, friday, saturday};
    enum weekday week_day;//week_day  就是一个枚举类型变量


    7.*p=NULL *p=new char[100] sizeof(p)各是指针类型,指针是无符号32位整数,所占存储空间必然为4。

  2. 1.在项目管理中,关键路径是指网络终端元素的元素的序列,该序列具有最长的总工期并决定了整个项目的最短完成时间。

    (1) 关键路径 从源点到汇点的路径长度最长的路径叫关键路径。
    (2) 活动开始的最早时间e(i)
    (3) 活动开始的最晚时间l(i) 定义e(i)=l(i)的活动叫关键活动。
    (4) 事件开始的最早时间ve(i)
    (5) 事件开始的最晚时间vl(i)

    AOE网研究的问题
    (1) 完成整个工程至少需要多少时间;
    (2) 哪些活动是影响工程的关键。


    求关键路径的算法分析
    (1) 求关键路径必须在拓扑排序的前提下进行,有环图不能求关键路径;
    (2) 只有缩短关键活动的工期才有可能缩短工期;
    (3) 若一个关键活动不在所有的关键路径上,减少它并不能减少工期;
    (4) 只有在不改变关键路径的前提下,缩短关键活动才能缩短整个工期。
    =======================================================================================
    2.隐式转换和显式转换
    显式就是需要你手动写代码转换的
    隐式就是两个变量之间可以直接相互赋值的


    3.memset
    将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。

    4.原型:char * strncpy(char *dest, char *src,size_tnum);
    功能:(c/c++)复制src中的内容(字符,数字、汉字....)到dest,复制多少由num的值决定,返回指向dest的指针。

    5.string.c_str是Borland封装的String类中的一个函数,它返回当前字符串的首字符地址。

  3. 1.“引用”与多态的关系?

     引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。
    例4 :Class A; Class B : Class A{...}; B b; A& ref = b;
    =====================================================================
    2.结构与联合有何区别?

    1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。
    2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的.
    ---------------------------------------------------------------------------------------------

    3. .h头文件中的ifndef/define/endif 的作用?
    答:防止该头文件被重复引用。

    ---------------------------------------------------------------------------------
    4.

    多态的作用?

     主要是两个:1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。
    -----------------------------------------------------------------------------------------------
    5. new delete 与malloc free 的联系与区别?

    答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.
    --------------------------------------------------------------------------------------
    6. main 函数执行以前,还会执行什么代码?
    答案:全局对象的构造函数会在main 函数之前执行。
    -------------------------------------------------------------------------------------
    7..struct 和 class 的区别
    答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和 class 在其他方面是功能相当的。
    --------------------------------------------------------------------------------
    8.在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel)
    答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。
    ------------------------------------------------------------------------------------
    9..分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。
    答案:
    BOOL : if ( !a ) or if(a)
    int : if ( a == 0)
    float : const EXPRESSION EXP = 0.000001
    if ( a < EXP && a >-EXP)
    pointer : if ( a != NULL) or if(a == NULL)
    --------------------------------------------------------------------------------------
    10.请说出const与#define 相比,有何优点?
    答案:1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。
    2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。
    ----------------------------------------------------------------------------------------
    11.简述数组与指针的区别?
    数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。
    --------------------------------------------------------------------------------------
    12.找出两个数中最大的数:
    ( ( a + b ) + abs( a - b ) ) / 2
    ----------------------------------------------------------------------------------------
    13.. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?
    答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行.
    --------------------------------------------------------------------------------------
    14. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
    答案:
    #ifdef __cplusplus
    cout<<"c++";
    #else
    cout<<"c";
    #endif
    ---------------------------------------------------------------------------------
    15.KMP算法:检查字符串匹配问题:
    假设在模式匹配的进程中,执行T[i]和W[j]的匹配检查。若T[i]=W[j],则继续检查T[i+1]和W[j+1]是否匹配。若T[i]<&gt;W[j],则分成两种情况:若j=1,则模式串右移一位,检查T[i+1]和W[1]是否匹配;若1<j<=m,则模式串右移j-next(j)位,检查T[i]和W[next(j)]是否匹配。重复此过程直到j=m或i=n结束。
    ------------------------------------------------------------------------------------
    16.如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针)
    一种O(n)的办法就是(搞两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):
    -------------------------------------------------------------------------------------
    17.原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。
    --------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值