zoukankan      html  css  js  c++  java
  • 路漫漫,其修远~

    1. 数组作为函数的参数,会退化为函数指针

    数组作为函数的参数将变成指针类型,将指针传入时,即是求指针的sizeof。32位系统的指针是一个int,4个字节。

     1 在32位机器中,如下代码:
     2 
     3 void example(char acWelcome[]){
     4     printf("%d",sizeof(acWelcome)); //32位机器输出4,64位机器输出8
     5     return;
     6 }
     7 void main(){
     8     char acWelcome[]="Welcome to Huawei Test";
     9     printf("%d",sizeof(acWelcome)); //输出32
    10     example(acWelcome);
    11     return;
    12 }

     

    2. 内置类型与自定义类型被new时的动作

    对于内置类型而言,new仅仅是分配内存,除非后面显示加(),相当于调用它的构造函数。
    对于自定义类型而言,只要一调用new,那么编译器不仅仅给它分配内存,还调用它的默认构造函数初始化,即使后面没有加()。
    1 下面描述正确的是
    2 
    3 int *p1 = new int[10]; //p1申请的空间里的值是随机值
    4 int *p2 = new int[10](); //p2申请的空间里的值已经初始化

    3. 指针位移

    指针是跳类型不是跳字节的。

    一个unsigned long占4个字节,所以跳5就是偏移4*5=20个字节,16进制即为14,加上段地址0x810000就是0x810014。

    1 unsigned char *p1;
    2 unsigned long *p2;
    3 p1=(unsigned char *)0x801000;
    4 p2=(unsigned long *)0x810000;
    5 
    6 请问
    7 p1+5= ? //0x810005
    8 p2+5= ? //0x810014

    4. 枚举变量

    枚举变量是全局变量的情况下, 枚举值的缺省值是0,不是枚举的第一个值。 其他情况,其值是不定的,而且不限定于所列出的枚举值。

    enum只是定义了一个常量集合,里面没有“元素”,枚举类型是当做int类型存储的, sizeof值都为4 ,并且系统为其初始化为0;

    内置类型的变量,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0.而定义在函数体内部的内置类型变量将不被初始化。《C++ primer 5th》p40 默认初始化

    1 enum string{    
    2     x1,    
    3     x2,    
    4     x3=10,    
    5     x4,    
    6     x5,    
    7 } x;
    8 
    9  函数外部问x等于什么? //0
    • 说说你对STL的理解。

    • 说说new和malloc的区别?
    • 说说你对设计模式的看法?
    • 为什么有的类的析构函数是虚函数?
    • 面向对象的三个特征是什么,并对每个特征做简单解释?
    • MFC是什么,是否使用过?
    • 静态链接库和动态链接库的区别是什么?

  • 相关阅读:
    针对wamp的phpmyadmin显示#2003无法连接mysql
    vs2019编译gdal3.1.0报错 (filemanager.obj) : error LNK2001: 无法解析的外部符号 __imp_SHGetFolderPathW
    半透明遮罩层覆盖整个可视区域
    css首字下沉
    仿花瓣标题栏始终在页面顶部(ie6下position:fixed失效解决方法)
    Redis最佳实践及核心原理
    Java对接微信公众号模板消息推送
    XXLJOB任务调度
    MyBatis学习笔记
    SpringBoot集成Redis
  • 原文地址:https://www.cnblogs.com/wangxiaokun/p/6725852.html
Copyright © 2011-2022 走看看