C/C++
文章平均质量分 69
程序员小群
技术之路最公平也最残酷的原因是:没有捷径!需要日积月累的积累,以及对技术持久的热情!!
展开
-
C语言printf() 详解之终极无惑
C语言printf() 详解之终极无惑_李肖遥的博客-CSDN博客编译环境:Linux 环境以 g++ 4.4.6 编译成 64 位程序1.printf() 简介printf() 是 C 语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf() 申明于头文件 stdio.h。函数原型:intprintf(constchar*format,...);返回值:正确返回输出的字符总数,错误返回负值。与此同...转载 2022-05-30 10:06:20 · 3124 阅读 · 0 评论 -
在哪里可以找到最新的C或C ++标准文档?
在哪里可以找到最新的C或C ++标准文档?https://qastack.cn/programming/81656/where-do-i-find-the-current-c-or-c-standard-documents转载 2021-05-21 10:54:15 · 756 阅读 · 0 评论 -
走进编程:C++的发展历程
https://zhuanlan.zhihu.com/p/53360728走进编程:C++的发展历程C++编程语言走到今天已经有将近40年的历史了,那么我们今天就来看看这个发展历程,看我们从一代又一代的C++标准之中能发现什么秘密吧!我们走进C++的世界······C++的历史可以追溯到1979年,当时Bjarne Stroustrup(译者注:C++之父)正在准备他的博士毕业论文,他有机会使用一种叫做Simula 的语言。顾名思义,Simula语言的主要作用是仿真。Simula 67是Simu转载 2021-05-21 02:49:25 · 897 阅读 · 0 评论 -
C/C++标准发展史(整理)
https://www.cnblogs.com/kinsang/articles/6752102.htmlC/C++标准发展史(整理)C语言起源 【起源】 C 语言最早的原型是 ALGOL 60 1963 年,剑桥大学将其发展成为 CPL(Combined Programing Language)。 1967 年,剑桥大学的 Matin Richards 对 CPL 语言进行了简化,产生了 BCPL 语言。 1970 年,美国贝尔实验室(Bell Labs)的 Ken Thomp...转载 2021-05-21 02:45:06 · 710 阅读 · 0 评论 -
C语言标准发展历程
C语言标准发展历程https://blog.csdn.net/benkaoya/article/details/93375571972年,贝尔实验室的Dennis Ritche和Ken Thompson在开发UNIX操作系统时设计了C语言,它是在B语言的基础上进行设计。C语言的设计理念为自顶向下、逐步求精、结构化、模块化。采用C语言编写的程序具有易读性、可靠性、高效性,可移植性等特性,让它迅速流行起来。C语言的发展之初并没有所谓的标准,人们在实践中注意到,相同的C程序在不同的C实现下的运..转载 2021-05-21 02:23:24 · 772 阅读 · 0 评论 -
c++ 发展历程
##C++ 发展历程:C++98 到 C++03 到 C++11 到 C++14 到 C++171C++语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模转载 2021-05-21 00:20:49 · 2781 阅读 · 0 评论 -
深入理解C语言-----副作用(Side Effect)和顺序点(Sequence Point)
先看几个概念:1。引用透明:如果一个表达式(或子表达式)只计算出值而不改变环境,我们就说它是引用透明的,这种表达式早算晚算对其他计算没有影响(不改变计算的环境。当然, 它的值可能受到其他计算的影响)。比如:(a+b)*(c+d),无论先计算乘号两边都可以2. 副作用:如果一个表达式不仅算出一个值,还修改了环境,就说这个表达式有副作用(因为它多做了额外的事)。比如:a++那么,多个副作用之间的发生顺序是怎样的? C 标准规定代码执行过程中的某些时刻是Sequence Po...转载 2021-02-18 22:41:06 · 722 阅读 · 0 评论 -
IEEE标准中32位、64位浮点数的取值范围
https://blog.csdn.net/chr1991/article/details/85109652?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control目录.转载 2021-02-15 21:22:18 · 5170 阅读 · 0 评论 -
从如何判断浮点数是否等于0说起——浮点数的机器级表示
https://www.cnblogs.com/kubixuesheng/p/4107309.html正文题目中针对的0,对于浮点类型,具体指的是0.0,自然对于指针类型就是NULL,对于整型就是0,一些常见笔试面试题中常出现,不要较真,十分欢迎提出改进意见。本文很大程度上收到林锐博士一些文章的启发,lz也是在大学期间读过,感觉收益良多,但是当时林锐也是说了结论,lz也只是知其然,而不知其所以然,为什么要那样写?为什么要这样用?往往一深究起来就稀里糊涂了,现在有幸还是继续读书,我发现..转载 2021-02-09 20:30:11 · 2585 阅读 · 0 评论 -
16/32/64平台上不同内置数据类型所占的字节数大小
https://blog.csdn.net/qq_32535249/article/details/88077019?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242这种问题一般出现在c++中,对一个类对象大小的考察,同时还要考虑字节对齐的影响,为考虑效率,在32位平台中(最大内存空间是2^32),内存是以4字节对齐(不够4字节填充为4字节);在64位平台中(最大.转载 2021-01-28 13:27:32 · 1090 阅读 · 1 评论 -
32位和64位系统下C内置类型的长度
https://blog.csdn.net/haoni123321/article/details/7860355Linux 32位sizeof(char)=1sizeof(short)=2sizeof(int)=4sizeof(long)=4sizeof(long long)=8sizeof(float)=4sizeof(double)=8sizeof(long double)=12Linux 64位sizeof(char)=1sizeof(short)=2sizeof(.转载 2021-01-28 13:25:27 · 367 阅读 · 0 评论 -
C++中头文件与源文件的作用详解
一、C++ 编译模式通常,在一个 C++ 程序中,只包含两类文件―― .cpp 文件和 .h 文件。其中,.cpp 文件被称作 C++ 源文件,里面放的都是 C++ 的源代码;而 .h 文件则被称作 C++ 头文件,里面放的也是 C++ 的源代码。C++ 语言支持"分别编译"(separatecompilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的 .cpp 文件里。.cpp 文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目转载 2020-12-20 13:26:40 · 198 阅读 · 0 评论 -
C++字符串查找和替换
#include <iostream>#include <string>using namespace std; void string_replace(string &str, const string old0, const string new0);int main(int argc, char* argv[]){ string str =...转载 2018-10-29 00:53:35 · 352 阅读 · 0 评论 -
vector查找元素
今天又忘了怎么在vector中查找某一个值。。唉。。每次都忘。。现在记下来。。(- -!)stl包括容器、迭代器和算法:容器 用于管理一些相关的数据类型。每种容器都有它的优缺点,不同的容器反映出程序设计的不同需求。容器自身可能由数组或链表实现,或者容器中的每个元素都有特殊的关键值。迭代器 用于遍历一个数据集中的每个元素。这些数据集可能是容器或者容器的子集。迭代器的主要优点是它们为任意类...转载 2018-10-29 00:40:09 · 23249 阅读 · 0 评论 -
C++ 获取当前时间毫秒数(兼容windows和linux)
https://blog.csdn.net/sunxianliang1/article/details/52150365 #ifdef _WIN32 #include <winsock2.h> #include <time.h>#else #include <sys/time.h>#endif unsigned long ...转载 2018-09-23 14:13:33 · 1763 阅读 · 1 评论 -
秒的换算:ms(毫秒),μs(微秒),ns(纳秒),ps(皮秒)
皮秒皮秒,符号ps(英语:picosecond ).1皮秒等于一万亿分之一秒(10-12秒)1,000 皮秒 = 1纳秒 1,000,000 皮秒 = 1微秒 1,000,000,000 皮秒 = 1毫秒 1,000,000,000,000 皮秒 = 1秒纳秒纳秒,符号ns(英语:nanosecond ).1纳秒等于十亿分之一秒(10-9秒)1 纳秒 = 1000皮秒 1,0...转载 2018-07-20 17:24:57 · 20120 阅读 · 0 评论 -
-L、-rpath和-rpath-link的区别
关于这3个参数的说明,有不少资料,但是看完了还是觉得模糊,分不清它们的区别。本文将用实验的方法去探讨这3个参数的区别。1、三个.c文件1.1 world.c#include<stdio.h>void world(void) { printf("world.\n");}1.2 hello.c#include &lt;stdio.h&gt;void world(voi...原创 2018-07-07 22:06:13 · 1952 阅读 · 3 评论 -
Linux静态库与动态库制作
1、静态库1.1 生成.o文件 用-c生成.o文件(用.o文件来生成库文件——包含静态库和动态库)。ubuntu $gcc –c apuelib.c /* 利用.c文件生成.o文件 */1.2 生成静态库 通过.o文件生成静态库文件ubuntu $ar rcsv libapuelib.a apuelib.o /* 库名要以lib开头 */1.3 测试 通过生成的静态库文件进...转载 2018-07-07 17:47:09 · 138 阅读 · 0 评论 -
linux编译动态库之fPIC
在生成动态库时,常常习惯性的加上fPIC选项,fPIC有什么作用和意义,加不加有什么区别,这里做下小结:fPIC的全称是 Position Independent Code, 用于生成位置无关代码。什么是位置无关代码,个人理解是代码无绝对跳转,跳转都为相对跳转。1、不加fPIC选项即使不加fPIC也可以生成.so文件,但是对于源文件有要求,例如因为不加fPIC编译的so必须要在加载到用户程序的地址...转载 2018-07-07 15:30:13 · 290 阅读 · 0 评论 -
Qt中QT_BEGIN_NAMESPACE和QT_END_NAMESPACE的作用
在Qt中,我们经常会看到QT_BEGIN_NAMESPACEclass QAction;class QMenu;class QPlainTextEdit;QT_END_NAMESPACE这样的方式表达方式!这样做有什么意义呢?只要深入最终这个宏就知道了。嘻嘻在qglobal.h中我们可以看到这样的定义# define QT_BEGIN_NAMESPACE namespace Q...转载 2018-12-03 01:55:14 · 2044 阅读 · 0 评论 -
gcc -fPIC选项
使用 -fPIC 选项,会生成 PIC 代码。.so 要求为 PIC,以达到动态链接的目的,否则,无法实现动态链接。non-PIC 与 PIC 代码的区别主要在于 access global data, jump label 的不同。比如一条 access global data 的指令,non-PIC 的形势是:ld r3, var1PIC 的形式则是:ld r3, var1-offset@GO...转载 2018-07-07 15:29:34 · 404 阅读 · 0 评论 -
C++基础-string截取、替换、查找子串函数
1. 截取子串 s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回 s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回2. 替换子串 s.replace(pos, n, s1) 用s1替换s中从pos开始(包括0)的n个字符的子串3. 查找子串 ...转载 2018-10-29 00:54:47 · 2007 阅读 · 0 评论 -
C++ ofstream ifstream 按行读写文件
加上头文件#include <sstream> #include <iostream>#include <fstream>#include <string>using namespace std;//命名空间也要加1,按行读文件 //读txt文件ifstream infile;//定义文件变量infile.open...转载 2018-10-29 00:57:13 · 4883 阅读 · 0 评论 -
常成员变量,常成员对象,常成员函数的详解
1.常成员变量:常成员变量是用关键字const来声明的变量,const位于变量前或者类型前都一样,用const修饰的变量只能初始化一次,以后都用这个值。。class Time{ public:const int hour; int const minute; };注明:常成员函数只能通过构造函数的初始化表对其进行初始化,常成员变量所在类中所有的构造函数...原创 2018-06-03 12:19:32 · 2548 阅读 · 1 评论 -
c++中char转换为string类型
https://blog.csdn.net/potxxx/article/details/87290812\写程序遇到一个Bug如下:char x = 'a';string str(x); //这里报错了当时就有点蒙了,查了下string的构造函数:string(); string (const string& str);stri...转载 2019-07-09 21:03:04 · 27164 阅读 · 3 评论 -
《C++ Template Metaprogramming》译序——经典之后的经典
https://blog.csdn.net/pongba/article/details/90643 ——写在C++图书出版史上又一部经典著作问世之前刘未鹏 /文 C++图书界沉寂久矣!至少我是这么认为的。国内引进第一批C++经典书籍的时候我是亲历的。感觉真是“忽如一夜春风来,千树万树梨花开”。别误会,我说的这个第一批并非《C++ Programming Language》...转载 2019-01-02 19:58:58 · 559 阅读 · 0 评论 -
Substitution failure is not an error
Substitution failure is not an errorFrom Wikipedia, the free encyclopediaSubstitution failure is not an error (SFINAE) refers to a situation in C++ where an invalid substitution of templateparamet...转载 2019-01-06 16:40:19 · 276 阅读 · 0 评论 -
gcc源代码下载
ftp://ftp.gnu.org/pub/gnu/gcc/ https://gcc.gnu.org/这是官网,不过找了半天木有找到,有人能留言指导一下不 http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html Linux GCC常用命令 ...原创 2018-12-02 18:26:24 · 1171 阅读 · 0 评论 -
值得推荐的C/C++框架和库 (真的很强大) (转)
值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz21055...转载 2018-12-02 17:58:14 · 868 阅读 · 0 评论 -
在vector中通过下标删除元素
在vector中删除元素,务必需要注意的一点是,vector在删除之后,已经发生变化,后续的有关操作必须考虑到删除操作带来的影响。要删除单个元素,你应该这样做:std::vector<int> vec;vec.push_back(6);vec.push_back(-17);vec.push_back(12);// 删除第二个元素 (vec[1])vec.erase...转载 2018-10-29 01:03:15 · 2401 阅读 · 0 评论 -
vector容器中添加和删除元素
https://www.cnblogs.com/sylar5/p/6549482.html 添加元素:方法一:insert() 插入元素到Vector中 iterator insert( iterator loc, const TYPE &val ); //在指定位置loc前插入值为val的元素,返回指向这个元素的迭代...转载 2018-10-29 01:01:59 · 11962 阅读 · 0 评论 -
g++的-pthread和-lpthread的区别
用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样:Shell代码 gcc -c x.c gcc x.o -ox -lpthread 而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样:Shell代码 gcc -pthread -...转载 2018-07-07 14:38:32 · 2860 阅读 · 0 评论 -
-lpthread和-pthread的区别
-lpthread和-pthread的区别编译程序包括 预编译, 编译,汇编,链接,包含头文件了,仅能说明有了线程函数的声明, 但是还没有实现, 加上-lpthread是在链接阶段,链接这个库。<stdio.h>等都是静态库,不需要做额外的表示,连接时会直接链接进代码里。pthread是动态库,需要用-lpthread,所有的动态库都需要用-lxxx来引用用gcc编译使用了POSIX ...转载 2018-07-07 14:37:50 · 1161 阅读 · 0 评论 -
C++函数中返回引用和返回值的区别
C++函数中返回引用和返回值的区别一、主要讨论下面两个函数的区别:int& at(){ return m_data_;}int at(){ return m_data_;}上面两个函数,第一个返回值是int的引用int&,第二个返回值是int,二者的区别是什么呢?我们先用一个语句 const int& a = mymay.at(); 来分别调用一次上...原创 2018-06-03 19:02:38 · 931 阅读 · 0 评论 -
C++之函数调用的返回值
函数调用中的返回值是放在一个临时变量中的,这个临时变量可能存在于寄存器中,也可能在栈中预先分配的一段空间中(因为编译器根据函数拥有返回值会预先分配空间),函数返回时,再把临时变量的值拿出来,放到应赋给的值所在的空间中(如果有赋值的话)。举个例子:int getnum(){ int a = 5; return a; }int main(){ int num = 1; num = getnum(); ...转载 2018-06-03 19:01:39 · 3333 阅读 · 0 评论 -
C++函数的返回值(下)
前面我们介绍了函数返回值是内置值类型、自定义值类型和引用类型的处理方法。本文将介绍函数的返回值是const指针类型时的处理方法。1 指向常量的指针指向常量的指针(pointer to const)不能用于改变其所指向对象的值。想要存放常量对象的地址,只能使用指向常量的指针。[cpp] view plain copyconst double pi = 3.14; double *ptr = π//...转载 2018-06-03 18:57:36 · 783 阅读 · 0 评论 -
C++函数的返回值(中)
在“C++函数的返回值(上)”中,介绍了函数返回值是非const类型的情况。本文将介绍函数返回值是值类型且为const的情况,返回值是引用类型且为const的情况将在“C++函数的返回值(下)”中介绍。1 返回值是const内置类型时在“C++函数的返回值(上)”中提到,对于返回值是值类型的函数,其返回值保存在临时对象中,且该临时对象是const。所以,对于返回值是的内置类型的函数来说,即使是非c...转载 2018-06-03 18:56:47 · 1146 阅读 · 0 评论 -
C++函数的返回值(上)
对于C++有返回值的函数来说,其返回值的类型可以是值类型,也可以是引用类型。1 返回值为值类型的函数使用临时对象(temporary object)来保存函数的返回值。函数的返回值用于初始化调用点的一个临时对象,该临时对象就是函数调用的结果。如[cpp] view plain copyint func() { return 1; } int i = func(); 此时,有一个临时对象用...转载 2018-06-03 18:55:28 · 4295 阅读 · 2 评论 -
为什么const对象只能调用const成员函数,而不能调用非const成员函数?
在c++中,我们可以用const来定义一个const对象,const对象是不可以调用类中的非const成员函数,这是为什么呢?下面是我总结的一些原理。假设有一个类,名字为test代码如下: 1 class test{2 int i;3 public:4 void print();5 test(int i);6 }; 我们知道c++在类的成员函数中还会隐式传入一个指向...原创 2018-06-03 15:55:49 · 3349 阅读 · 1 评论 -
c++ 常成员函数 和 常对象
先明确几个概念:1. 常对象只能调用常成员函数。2. 普通对象可以调用全部成员函数。3. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。4. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。 5. 在C++中,this指针被隐含地声明为: X *const ...原创 2018-06-03 15:55:01 · 3224 阅读 · 0 评论