
c c++
文章平均质量分 84
c c++ 类知识
shankusu2017
go lua c 服务器开发 shankusu2017.github.io
展开
-
C++ 指针和引用的区别 引用底层的原理
以下内容转载自https://www.toutiao.com/i6826722460080013837/C++中指针与引用的区别原创算法集市2020-05-15 07:30:00初学C++时,很容易把指针和引用的用法混在一起,下面通过一些示例来说明指针和引用两者之间的差别。1、两者的定义和性质不同指针是一个变量,存储的是一个地址,指向内存的一个存储单元;引用是原变量的一个别名,跟原来的变量实质上是同一个东西。int a = 996;int *p = &a; // ..转载 2021-02-18 10:47:05 · 830 阅读 · 0 评论 -
extern “c”的用法解析
以下内容转载自https://www.toutiao.com/i6673222336109347339/在使用C++进行编码时,有时会看到extern "C"字段,它代表的是什么含义呢?让我们一起来学习下:extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。(1) 被extern "C"限定的函数或变量是extern类型的(2) 被extern "C"修饰的变量和函数是按照C语言方式编译.转载 2021-02-17 21:55:31 · 138 阅读 · 0 评论 -
C++ 一篇搞懂多态的实现原理
以下内容转载自https://www.toutiao.com/i6788724956340421123/虚函数和多态01 虚函数virtualvirtualclass Base { virtual int Fun() ; // 虚函数};int Base::Fun() // virtual 字段不用在函数体时定义{ }02 多态的表现形式一「派生类的指针」可以赋给「基类指针」; 通过基类指针调用基类和派生类中的同名「虚函数」时:若该指针指向一个基类的对象.转载 2021-02-17 21:54:40 · 347 阅读 · 0 评论 -
C语言对齐问题,含结构体、栈内存以及位域对齐
以下内容转载自https://www.toutiao.com/i6836353231191278083/引言考虑下面的结构体定义:假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4。现在,我们编写一个简单的程序:运行后输出:为什么会这样?这就是字节对齐导致的问题。本文在参考诸多资料的基础上,详细介绍常见的字节对齐问题。因成文较早,资料来源大多已不可考,敬请谅解。一,什么是字节对齐现...转载 2021-02-17 21:40:23 · 1298 阅读 · 0 评论 -
弄清楚了这四个关键词,也就弄懂了C++语言中的虚函数
以下内容转载自https://www.toutiao.com/i6771398581862531595/原创IT刘小虎2019-12-17 21:24:50上一节基于一个简单的实例讨论了C++语言中的虚函数,我们提到了“动态绑定”这个词,大意就是动态绑定在很大程度上满足了虚函数的特性,从而支持了C++的多态性。不过我们知道,C++是一门强类型的语言,它是如何在保持静态类型的同时,实现动态绑定的呢?如何在保持静态类型的同时,实现动态绑定的呢?“静态”VS“动态”在C++语言中,对象指.转载 2021-02-17 21:38:34 · 150 阅读 · 1 评论 -
C++面向对象开发的四大特性:封装、抽象、继承、多态
以下内容转载自https://www.toutiao.com/i6852293854188864004/原创算法集市2020-07-22 21:22:021、封装封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制程序对类属性的读取和修改。对于类的内部,成员函数可以自由修改成员变量,进行更精确的控制; 对于类的外部,良好的封装能够减少耦合,同时隐藏实现细节。C++类成员的三种访问权限:public/protected/private试想如果对类中成员变量的访问不做限制,..转载 2021-02-17 21:36:42 · 610 阅读 · 0 评论 -
值得学习的C语言开源项目
以下内容转载自 https://www.toutiao.com/i6816559091704398339/- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/webbench.转载 2021-02-16 00:38:10 · 453 阅读 · 1 评论 -
C++对象模型之何为对象模型?
以下内容转载自https://www.toutiao.com/i6584356542387061251/考试紧张2018-07-31 20:35:19首先问大家一个问题,何为C++对象模型?有些读者可能一时半会不知道怎么回答,或者还不理解这是什么意思。那就仔细的往下看吧。C++对象模型可以概括为以下2部分:1、语言中直接支持面向对象程序设计的部分;2、对于各种支持的底层实现机制。语言中直接支持面向对象程序设计的部分,如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多转载 2021-02-16 00:12:18 · 261 阅读 · 0 评论 -
C++初学者必看的50个建议 绝对经典
以下内容转载自https://blog.youkuaiyun.com/digitalkee/article/details/979320091.把C++当成一门新的语言学习(和C没啥关系!真的。);2.看《Thinking In C++》,不要看《C++变成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集.转载 2020-11-11 14:49:33 · 165 阅读 · 0 评论 -
c++ 关键字
do if return auto break else sizeof case switch continue for default static union unsigned char struct const void volatile float false truedouble short ...原创 2018-07-23 16:22:35 · 137 阅读 · 0 评论 -
如何计算毫秒级的时间差
以下内容转载或引用或参考http://www.cnblogs.com/goagent/archive/2014/11/08/4083812.html计算毫秒级的时间差算是一个常见的需求吧...手头上是windows编程的项目,所以首先就想到的是GetTickCount(),但MSDN上这么说:写个程序试一下吧: 1 #include <stdio.h> 2 #include <...转载 2018-06-29 11:31:33 · 1604 阅读 · 0 评论 -
0xC0000005
0XC0000005是关于内存的,可能情况如下1.内存非法引用2.函数申请的堆栈太大,可以考虑使用静态变量原创 2018-06-26 19:25:03 · 5035 阅读 · 0 评论 -
c++ new和delete
以下内容转载自https://blog.youkuaiyun.com/xxpresent/article/details/53024555说起new和delete,了解过c++的人应该都知道吧,它是用来分配内存和释放内存的两个操作符。与c语言中的malloc和free类似。c语言中使用malloc/calloc/realloc/free进行动态内存分配,malloc/calloc/realloc用来在堆上分配...转载 2018-06-06 12:06:33 · 233 阅读 · 0 评论 -
const在C语言中的用法详解
const在C语言中的用法详解此文转自网络const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable)。我们来分情况看语法上它该如何被使用。1、函数体内修饰局部变量。例:void func(){ const int a=0;}123首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0。然后...转载 2018-05-15 12:05:31 · 390 阅读 · 0 评论 -
C++ 纯虚函数
以下内容转载自https://baike.baidu.com/item/%E7%BA%AF%E8%99%9A%E5%87%BD%E6%95%B0/9113729?fr=aladdin纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。中转载 2017-12-07 10:15:54 · 352 阅读 · 0 评论 -
C++11特性:auto关键字
以下内容转载或引用或参考http://www.cnblogs.com/QG-whz/p/4951177.htmlC++11特性:auto关键字阅读目录C++98 autoC++11 autoauto的用法注意事项 正文前言本文的内容已经不新鲜了。关于auto,翻来覆去被人知道的都是这些东西,本文转载 2017-09-19 14:32:11 · 329 阅读 · 0 评论 -
vector的reserve和resize
以下内容转载或引用或参考http://www.cnblogs.com/qlee/archive/2011/05/16/2048026.htmlvector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: reserve是容器预留空间,转载 2017-08-18 15:35:24 · 218 阅读 · 0 评论 -
C++中的STL中map用法详解
今天引擎需要加一些功能模块上来,用到了stl中的map,这里将今天网上参考的东西自己CP一份。以下内容参考或引用https://www.cnblogs.com/fnlingnzb-learner/p/5833051.htmlC++中的STL中map用法详解Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理...转载 2018-06-05 23:44:21 · 164 阅读 · 0 评论 -
STL之vector容器详解
vector 容器vector是C++标准模版库(STL,Standard Template Library)中的部分内容。之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说:vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。使用vector容器之前必须加上头文件:#include;vector属于std命名域的内容,因此需要通过命名限转载 2017-12-19 20:09:56 · 209 阅读 · 0 评论 -
sync、fsync与fdatasync
一下内容转载自 http://blog.youkuaiyun.com/cywosp/article/details/8767327传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据转载 2017-02-21 08:42:26 · 429 阅读 · 0 评论 -
stat
stat函数讲解表头文件: #include #include 定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返回-1,错误代码存于errn转载 2017-02-21 08:39:58 · 249 阅读 · 0 评论 -
C 命名空间
以前看过一本《C语言参考手册》,其中讲解了命名空间,这几天在学习C的基础语法,故而总结下。 C命名空间分为独立(各个空间即使出现重名也不会影响)的下面个空间。第一类基础类型空间eg: 整形(char short int long) 浮点(float double ),指针(void*),第二类:聚合 enum struct union实际上这和C对数据分类差不多,更为...原创 2018-06-25 12:26:22 · 3214 阅读 · 0 评论 -
C 字面常量类型
整形字面值的数据类型,C采用最小且能容纳改字面值的类型 int a = 4, 4采用char就足够了枚举常量,系统固定类型为int,eg enum ee1{e1=10,}; sizeof(e1)==4,而不是1。浮点字面常量C默认为doubel。指针则看系统而定。...原创 2018-06-25 12:33:49 · 903 阅读 · 2 评论 -
const关键字对C++成员函数的修饰
以下内容转载自https://www.cnblogs.com/myseasky/p/7458064.htmlconst对C++成员函数的修饰分为三种:1. 修饰参数;2. 修饰返回值;3. 修饰this指针。简述一下知识点如下,以后找功夫再完善。1. 对函数参数的修饰。 1)const只能用来修饰输入参数。输出型参数不能用const来修饰。 2)如果输入参数采用“指针传递”,那么加const修...转载 2018-07-02 21:37:11 · 298 阅读 · 0 评论 -
#pragma pack()用法详解
以下内容转载自https://blog.youkuaiyun.com/lime1991/article/details/445363431.什么是对齐?为什么要对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。...原创 2018-07-09 18:22:17 · 5324 阅读 · 0 评论 -
C操作符的优先级,结合性等
以下内容参考或引用https://www.cnblogs.com/liushui-sky/p/7993122.html 操作符 描述 用法实例 结果类型 结合性 是否控制求值顺序 () 聚组 (表达式...原创 2018-07-03 23:43:09 · 381 阅读 · 0 评论 -
指针和typedef
typedef string *pstring;const pstring cstr; err:const string *cstrok: step1: pstring const cstr; step2:string *const str;const修饰的是cstr而不是pstring.原创 2018-07-30 17:40:27 · 134 阅读 · 0 评论 -
do {...} while(0) 用途
在一些Linux内核和其它的开源代码中,我们经常看到像下面这样的代码: 1 2 3 do{ ... }while(0) 该代码片段并非循环,这样想想似乎使用do…while没有任何意义,那么为什么还要使用它呢?实际上,do{...}while(0)的用途并不仅仅是优化你的代码。经过一系列的调研和探索,我们总...转载 2018-09-03 14:33:45 · 339 阅读 · 0 评论 -
glibc分析一 系统调用
glibc源码分析(一)系统调用pk2017程序员13 人赞了该文章1.1 什么是glibcglibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行...转载 2018-09-06 21:11:01 · 2788 阅读 · 0 评论 -
glibc源码分析(二)系统调用
1.6 .c封装glibc中许多系统调用是用.c封装的方式封装的。.c封装都是借助嵌入式汇编,按照系统调用的封装规则进行封装的。可以查看stat64函数的实现,来探究.c封装。#undef stat64intattribute_hiddenstat64 (const char *file, struct stat64 *buf){ return __xstat64 (...转载 2018-09-06 21:11:34 · 2252 阅读 · 1 评论 -
glibc源码分析(三)文件系统系统调用
以下内容转载自https://zhuanlan.zhihu.com/p/31496984前文详细介绍了glibc封装系统调用的方法,在本文中我将向大家讲解glibc系统调用封装的具体的例子。这些例子都是关于文件系统的。1.1 文件的创建与删除linux支持7种文件:普通文件,目录文件,字符设备文件,块设备文件,管道文件,套接字文件,符号链接文件。每种文件的创建与删除都有对应系统...转载 2018-09-06 21:12:30 · 1043 阅读 · 0 评论 -
C 整数转换规则
以下内容参考C语言参考手册第五版 标量类型(算数类型和指针)可以转换为整数类型 布尔转换 在C99中,涉及_Bool类型的转换与涉及其他整数类型的转换稍有不同。把算数类型转换为_Bool类型时,如果原值为0,转换后的值为0。否则,转换后的值就是1。把指针类型转换为_Bool,null指针转换为0,其他所有指针值被转换为1。把_Bool类型转换为算数类型时,其结果是转换到目标类型的...原创 2019-09-02 11:23:43 · 727 阅读 · 0 评论 -
C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存
以下内容转载或参考或引用自https://blog.youkuaiyun.com/zxx910509/article/details/62881131一、malloc/free概述malloc是在C语言中用于在程序运行时在堆中进行动态内存分配的库函数。free是进行内存释放的库函数。1、函数原型[cpp]view plaincopy#include<stdlib.h>void*ma...转载 2018-06-23 15:14:57 · 840 阅读 · 0 评论