zoukankan      html  css  js  c++  java
  • 一些小细节

    1.下面代码有什么问题?
    Void test2() 

      char string[10], str1[10]; 
      for(i=0; i<10;i++) 
      { 
         str1[i] ='a'; 
      } 
      strcpy(string, str1); 
    }

    数组越界

    strcpy拷贝的结束标志是查找字符串中的/0 因此如果字符串中没有遇到/0的话 会一直复制,直到遇到/0

    ——————————————————————————————————————-————————

    2. .h头文件中的ifndef/define/endif 的作用?

    答:防止该头文件被重复引用。

     

    3. #include<file.h> 与#include "file.h"的区别?

    答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。

    4. New delete mallocfree 的联系与区别?
    答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.

    5. 有哪几种情况只能用intialization list(初始化列表) 而不能用assignment(赋值)?

    答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。

    6. main 函数执行以前,还会执行什么代码?
    答案:全局对象的构造函数会在main 函数之前执行,为malloc分配必要的资源,等等。

    7. 描述内存分配方式以及它们的区别?
    1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量
    2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。
    3) 从堆上分配亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

    4) 代码区。

     8.注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

  • 相关阅读:
    计算后的样式
    getElementsByTagName
    notepad++ 行首行尾添加字符
    Http协议基础知识
    HTTP工作流程
    URI URL URN的区别
    [转] Android利用Fiddler进行网络数据抓包
    微信公众号 跳转到小程序
    现金红包 接口开发注意事项
    现金红包 样式问题
  • 原文地址:https://www.cnblogs.com/samulescollection/p/3091571.html
Copyright © 2011-2022 走看看