美文网首页
C++复习--点点知识点

C++复习--点点知识点

作者: 要灰起来了 | 来源:发表于2017-07-31 00:20 被阅读0次

1.strlen与sizeof的区别?

a.strlen是一个函数,sizeof是一个运算符;

b.strlen返回int,sizeof返回是size_t类型,被定义为unsigned int

c.strlen的参数输入是一个char*类型,必须以‘\0’;sizeof的输入是类型等;

d.strlen是估算一个字符串的长度;而sizeof是计算容纳空间的大小。

2.strlen的实现,strcpy的实现?

char* strcpy(char * dest,const char* source)

{

     assert((dest!=NULL)&&(source!=NULL));

     char * address = dest;

     while((*dest++==*source++)!='\0');

     return address;

}

int strlen(const char* str)

{

    assert(str!=NULL);

    int len = 0;

    while(*str++!='\0')

    {

         len++;

     }

    return len;

}

3.struct与union的区别?

struct存储多个成员的信息,而union在一个时刻只存储一个成员的信息,会复写其它成员;

4.c++中那些内存需要手动释放?

malloc与free对应,new与delete 对应。malloc需要考虑内存申请失败的情况,同时,free后需要将指针指为空,防止野指针。

声明指针需小心,防止野指针。int * p = NULL;

5.防止被重复引用

#ifndef __HELLOWORLD

#define __HELLOWORLD

#endif

6.extern "C" {} 其中按照c的防止进行编译,实现C调用C++的方式,实现混合编程。

链接:https://www.nowcoder.com/questionTerminal/a314892082e649df8ee6294e012345b6

来源:牛客网

预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。

关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。

7.memset以及memcpy的实现

void* memset(void* s,int ch,size_t n)  功能:将s中当前位置后面的n个字节赋值ch.

void * memcpy(void* dest,const void* source, size_t n)  功能:将指针src指向的内存空间的n个字节复制到dest指针指向的内存空间

8.String类的构造函数,析构函数,赋值函数等的实现

String::String(const char* str)

{

    if(str==NULL)

    {

         m_data = new char[1];

         m_data[0] = '\0';

    }

    else

    {

          int len = strlen(str);

          m_data = new char[len+1];

          strcpy(m_data,str);

     }

}

String::~String()

{

    delete []m_data;

}

String::String(const char &other)

{

    int len = strlen(other.m_data);

    m_data = new char[len+1];

    strcpy(m_data,other.m_data);

}

String &String::operation=(const char& other)

{

    if(&other==this)

    {

         return *this;

     }

     delete [] m_data;

     int len = strlen(other.m_data);

     m_data = new char[len+!];

     strcpy(m_data,other.m_data);

     return *this;

}

9.const与static的用途

static的用途:

a.模块内,用于变量上,不能被外部模块使用,只能用于本模块。

b.模块内,用于函数上,不能被外部模块调用,只能用于本模块。

c.用于类内部变量,表示这个变量属于整个类,所有类只有一份内存拷贝。

d.用于类内部函数,表示不用实例类,直接可以调用;不接受this,只能访问static成员。

e.函数内部,用于变量,维持上次的值。

const的用途:

a.用于变量上,表示该变量不能被改变,定义时对它进行初始化。

b.用于类变量上,必须定义时初始化。

c.用于指针,可以指定指针也是指定指针对应的数据;

d.用于类的成员函数,放在右边,表明这是一个常量函数,不能修改类的成员变量。

e.用于类的成员函数返回,表明不能作为左值,被赋值。

10,File等

http://www.cnblogs.com/youngt/p/3708655.html

相关文章

  • C++复习--点点知识点

    1.strlen与sizeof的区别? a.strlen是一个函数,sizeof是一个运算符; b.strlen返...

  • C++简明教程

    本教程旨在提取最精炼、实用的C++知识点,供读者快速学习及本人查阅复习所用,后期会持续更新。 基本语法 C++ 语...

  • 生医多结藏毛NO.3专业知识点总结

    C++这周结课了,就知识点点做了个总结。电脑上显示的一个程序,敲得代码。

  • C++复习之知识点

    1.编译 编译C++程序时,编译器自动定义一个__cplusplus。 编译标准C时,编译器自动定义__STDC_...

  • C++基础(二)

    由于感觉自己对C++语言的知识点遗忘了好多,于是近期复习C++语言基础知识,重新学习一遍感觉又有好多新的收获。在复...

  • 2019-06-23(day007)——c++新知识点: - c

    python python中的新知识点主要和c++中对比看吧 c++ c++新知识点: cv::bitwise_a...

  • lc25 关于链表

    复习知识点:1)链表反转2)关于指针。理解C++中指针传参,大概指针传参也是传的形参(like int数字),但是...

  • 2019-07-13(day036_Canny算子:边缘提取)

    c++ c++中新知识点Canny算子:边缘提取

  • C++复习

    C++谭版期末复习 前言 好好复习,简单看看语法 从C到C++ C++的输入输出 cin cout cerr cl...

  • C/C++的100个小知识点(一)

    C/C++的100个小知识点(一) 写一些C/C++的知识点 Hello World!   hello world...

网友评论

      本文标题:C++复习--点点知识点

      本文链接:https://www.haomeiwen.com/subject/osyikxtx.html