zoukankan      html  css  js  c++  java
  • 牛客C++刷题

    1. 给原类型起别名:typedef int v1;

    2. 用户定义的函数不可以调用的函数是main();

    3. if(judge)后面可以直接什么都不跟

    4. 函数的定义不可以嵌套,函数的调用可以嵌套,函数A的声明可以嵌套在另一个函数B的函数体内,但必须实现在该函数B外,且仅在函数B可见

    5.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是整形,但是实际上他妈的1999年就禁止了

    6.int x[6][4],(*p)[4]; p=x;   则*(p+2)指向哪里?p是指向int[4]类型的指针,p = x,指向x的首地址。p+2,即加上2个指向类型的大小,即2 * 4 = 8个int,所以*(p+2)指向x[2][0]

    7.
    以下程序运行后的输出结果是(      )
    int main()
    {
    int a=1,b=2,m=0,n=0,k;
     
    k=(n=b<a)&&(m=a) ;
    printf("%d,%d
    ",k,m);
     
    return 0;
    }

    & &逻辑与运算,先执行n=b<a,得n=0,赋值表达式的返回值为赋值符号右边的值,即0,逻辑与运算结束,不执行m=a。m未被赋值,仍为0。

    8. 一个算法应该具有以下5个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。因此一个算法可以没有输入(程序的功能确定),但必须要有输出,没有输出的算法是没有意义的。注意算法与函数的区别。

    9. 当基类构造函数需要外部传递参数才能进行初始化时,派生类必须显式定义构造函数,为基类传递参数;基类如果不需要传递或者可以不传递参数,派生类可以不用显式定义构造函数。
    10. 类的静态成员变量,为所有类对象所共有,但不属于任何一个对象
    11. char s[10];s="abcdefg";出错,是因为数组名s是常量指针,代表数组的首地址,它的值不能被改变
    12.if(judge)后如果不使用{}则默认只有一句在{}内,注意,是一句
    13. 存在性就是变量生命周期。可见性就是能访问。内部静态类就是只有在包含该类的上下文里才能使用的类,比如在一个类内部定义的类。但它是全局存在的。
    14. 下面代码的输出结果:
    void main(void)
    {
         int a[5]={1,2,3,4,5};
         int *ptr=(int *)(&a+1);
         printf("%d,%d",*(a+1),*(ptr-1));
    }
    *(a+1)没有什么疑问,就是指a[1]=2。
     *(ptr-1)是主要难点,我们要先弄清楚ptr指针代表什么?
    &a+1不是首地址+1,&a是把数组看成一个整体,即偏移了整个数组a的大小(也就是5个int的大小)。所以int *ptr=(int *)(&a+1),其实ptr实际是&(a[5]),也就是a+5,注意这里的a[5]只是逻辑上的,并没有物理上的数组元素,表示指针ptr跳过数组的长度指向最后一个数字的下一个整型。
    故*(ptr-1) = a[4] = 5。
    15.结构体总的大小要被最大的整除,本体中long long 为8字节,所以整体大小为8的倍数。 另外,为什么不是16,因为每种类型变量的首地址要是自己类型的字节数整除,所以char后面要空着3个字节,之后才是int型变量。 所以一共24字节。
    16.函数默认参数的声明
    在相同的作用域内,不允许在同一个函数的多个声明中对同一个参数的默认值重复定义,值相同也不可以。如下:
    int func(int x=5,int y=6){
      //实现  
    }
    正确
    
    int func(int x=5,int y=6);
    int func(int x,int y){
      //实现  
    }
    正确
    
    int func(int x=5,int y=6);
    int func(int x=5,int y=6){
      //实现  
    }
    错误

     17

    .

    结果为 4,8

    分析:

    union中各成员共享一段内存空间,一个union的长度等于各成员中最长的长度。
    所以本题中,d 的长度等于struct  s的长度,为八字节(假设是32位)。
    具体如图所示:
    d.x,d.y以及d.s.x都是前四个字节,所以他们的值永远相等,
    d.x=1;///d.x=d.y=d.s.x=1;
    d.y=2;///d.x=d.y=d.s.x=2;
    d.s.x=d.x*d.x;///d.x=d.y=d.s.x=2*2=4;
    d.s.y=d.y*d.y;///d.x=d.y=d.s.x=4+4=8;
  • 相关阅读:
    VI与VIM区别
    所有的 Unix Like 系统都会内建 vi 文书编辑器。vim 是vi的升级版本,它不仅兼容vi的所有指令 ,而且还有一些新的特性在里面。
    串口bmc
    sed常用
    echo -n -e "请输入重启间隔的时间(分钟): "
    reboot 就是 poweroff 然后power on
    rpm -ql BackupPC |grep etc
    Linux压力测试软件Stress安装及使用指南2
    stress工具使用指南和结果分析(好好好测试通过)
    告别烧脑,金融保险企业邮件应该这样卖产品!
  • 原文地址:https://www.cnblogs.com/spock12345/p/11529340.html
Copyright © 2011-2022 走看看