当前位置: 首页 > news >正文

wordpress特定文章小工具seo引擎搜索入口

wordpress特定文章小工具,seo引擎搜索入口,pc 网站开发设计,404page wordpress笔者最近在找工作时,无意间读到了一本名为《剑指offer》的书,粗略翻阅了一下,感觉这将会是一本能让我不再苦恼于笔试和面试“手搓代码”的书。故笔者写下该系列博客记录自己的学习历程,希望能和这本书的读者朋友们一起交流学习心得…

笔者最近在找工作时,无意间读到了一本名为《剑指offer》的书,粗略翻阅了一下,感觉这将会是一本能让我不再苦恼于笔试和面试“手搓代码”的书。故笔者写下该系列博客记录自己的学习历程,希望能和这本书的读者朋友们一起交流学习心得。
介绍:《剑指Offer:名企面试官精讲典型编程题(第2版)》剖析了80个典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这5个面试要点。
编程题链接:牛客网在线编程_算法面试_面试必刷TOP101 (nowcoder.com)
本博客关键词:sizeof

介绍

  1. 在C/C++中,sizeof是一个关键字,也是一个运算符,用来获取类型或对象在内存中所占的字节大小。
  2. sizeof不是函数,在代码的编译阶段就会执行
  3. sizeof计算内存占用大小的应用场景:基本数据类型、数组、结构体、类、指针、枚举、联合体等。

引入

先阅读一下代码,预测下cout对应的输出都会是什么?(假设代码在64位机器上运行)

#include <iostream>using namespace std;// 空类型
class MyClass1
{
};// 添加了构造函数和析构函数的空类型
class MyClass2
{MyClass2();~MyClass2();
};// 析构函数为虚函数的空类型
class MyClass3
{MyClass3();virtual ~MyClass3();
};int main(int argc, char const *argv[])
{char str1[10] = "hello";const char *str2 = "hello world";int num1[10];int *num2 = new int[10];cout << sizeof(int) << endl;cout << sizeof(double) << endl;cout << sizeof(long) << endl;cout << sizeof(str1) << endl;cout << sizeof(str2) << endl;cout << sizeof(num1) << endl;cout << sizeof(num2) << endl;cout << sizeof(NULL) << endl;cout << sizeof(MyClass1) << endl;cout << sizeof(MyClass2) << endl;cout << sizeof(MyClass3) << endl;return 0;
}

结果如下:

    cout << sizeof(int) << endl;  // 4cout << sizeof(double) << endl;  // 8cout << sizeof(long) << endl;  // 8cout << sizeof(str1) << endl;  // 10cout << sizeof(str2) << endl;  // 8cout << sizeof(num1) << endl;  // 40cout << sizeof(num2) << endl;  // 8cout << sizeof(nullptr) << endl;  // 8cout << sizeof(MyClass1) << endl;  // 1cout << sizeof(MyClass2) << endl;  // 1cout << sizeof(MyClass3) << endl;  // 8

分析

  1. sizeof(int)这个输出为4很好理解,int类型占用4个字节的内存。
  2. sizeof(double)输出为8,也很好理解,double类型占用8个字节的内存。
  3. sizeof(long)输出为8。在32位机器中,long占4个字节,在64位机器中long占8个字节。
  4. sizeof(str1)输出为10,str1对应了数组str1[10]
  5. sizeof(str2)输出为8,str2对应一个指针。这里大家第一次看可能会有疑问,明明有”数组名称代表数组首元素地址“的说法,为什么sizeof(str1)sizeof(str2)的输出结果不一样呢?我是这样理解的:首先str2在这里确实是一个指针,所以sizeof(str2)对应的值是8,这是很好理解的;但是对于数组str1[10],str1本质上只是数组名,它并不占用任何的内存,它代表的是数组,它可以表示数组首元素的地址,但实际上数组首元素的地址是str1[0]对应的地址,str1数组名不占用实际内存。当使用sizeof运算符通过数组名计算数组内存占用时,数组名表示的是整个数组,而不是某个地址。
  6. 根据第5点的解释,很容易可以得出sizeof(num1)的输出为40,sizeof(num2)的输出为8。
  7. sizeof(nullptr)输出为8,关键字 nullptr 表示空指针。

接下来就是对sizeof(MyClass)的分析,也是书里提到的一个案例。

  1. 提问:定义一个空类型,里面没有任何成员变量和成员函数,对该类型求sizeof,结果是多少?
  2. 答案:空类型的示例中不包含任何信息,但是在声明该类型的实例时,必须在内存中有一定的空间,否则无法使用这些实例。至少占用多少字节的内存,由编译器决定,在GCC中,每个空类型的实例占用1字节。
  3. 提问:如果在空类型中加入一个构造函数和一个析构函数,再求sizeof,结果是多少?
  4. 答案:仍然是1,调用构造函数和析构函数只需要知道函数的地址即可,而函数的地址只与类型相关,编译器因为这两个函数而在实力内添加任何额外的信息。
  5. 提问:如果将析构函数标记为虚函数呢?
  6. 答案:在32位机器中输出为4,在64位机器中输出为8。因为C++编译器一旦发现类型中有虚函数,就会为该类型生成虚函数表,并在该类型的每一个实例中添加一个指向虚函数表的指针
    空类型如下:
// 空类型
class MyClass1{};

加了构造函数和析构函数:函数内容也为空

// 添加了构造函数和析构函数的空类型
class MyClass2
{MyClass2();~MyClass2();
};

将析构函数标记为虚函数:

// 析构函数为虚函数的空类型
class MyClass3
{MyClass3();virtual ~MyClass3();
};
http://www.qdjiajiao.com/news/9007.html

相关文章:

  • 做百度移动网站排名软今日头条新闻最新事件
  • 178网站建设黑帽seo联系方式
  • 常规做网站要在工信部认证吗信息流广告公司排名
  • 成都网站建设电话网络营销经典案例
  • 邢台做网站咨询电工培训技术学校
  • 网站建设论坛报告cba目前排行
  • 做货代网站佛山网站快速排名提升
  • 南宁网站建设设计制作百度推广点击收费标准
  • 交互做的好的中国网站武汉官网优化公司
  • dw网页制作教程完整版谷歌优化技巧
  • 服饰东莞网站建设镇江关键字优化公司
  • 扬州市开发区建设局网站首页制作网站费用
  • wordpress主题个人博客seo职业培训班
  • 网站的banner轮播怎么做重庆seo薪酬水平
  • 中小企业如何建设网站重庆seo整站优化报价
  • 网站建设及维护价钱成都新闻最新消息
  • 国家网站建设网时代教育培训机构官网
  • 彩票网站代理怎么做沧州seo包年优化软件排名
  • 店面设计有哪些石景山区百科seo
  • 好的网站设计题目印度疫情为何突然消失
  • 怎么对网站做压力测试深圳搜索引擎优化seo
  • 望野古诗王绩seo排名赚app下载
  • 绿色调网站哈尔滨网站建设
  • 企业自助建站模板上海职业技能培训机构
  • 昆明做网站建设的公司排名临沂seo公司稳健火星
  • 企业做网站多少钱流量查询网站
  • 一比一高仿手表网站指数运算法则
  • 摄影网站免费源码兰州网络seo公司
  • 专业的网站建设报价郑州专业的网站公司
  • 毕节城乡建设局网站查询建立网站费用大概需要多少钱