
▲ C/C++开发
文章平均质量分 66
本专栏将详细讲解和分析C/C++语言中的一些疑难知识、语法与使用。专栏中的知识点都是作者工作多年以来的总结和归纳,通过图文并茂的方式尽量让每一个技术点浅显易懂。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
内核之道
某大厂资深技术专家,精通PostgreSQL内核、专注于『NVR、AI超脑、智能应用服务器、Postgres内核』开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C/C++语言判断字符串是否全中文/包含中文
【代码】C/C++语言判断字符串是否全中文/包含中文。原创 2023-06-30 16:12:52 · 1692 阅读 · 0 评论 -
【109】C数组中容易混淆的几个点
所谓“不完整初始化”,即初始化值的数量和数组大小不匹配。不能声明一个元素列表个数超过数组的大小。有编译警告,可运行(某些环境下,会段错误)。但是不同平台、不同编译器的表现有所不同。这对于一些需要经常修改初始化值列表的数组用的比较多。某些情况下,可以省略掉数组的大小。上述方式1和方式2 等价。原创 2022-12-27 20:10:44 · 276 阅读 · 0 评论 -
【0108】C++ 并发编程(从C++11到C++17)
自C++11标准以来,C++语言开始支持多线程模型。借助多线程模型,我们可以开发出更好的并发系统。本文以C++语言为例,讲解如何进行并发编程。并尽可能涉及C++11,C++14以及C++17中的主要内容。原创 2022-11-15 07:58:55 · 386 阅读 · 0 评论 -
【003】源码剖析auto_ptr
文章目录1. auto_ptr概述2. auto_ptr使用3. auto_ptr源码实现4. auto_ptr特点5. 总结1. auto_ptr概述auto_ptr是C++中的智能指针工具之一,另外三个分别是:unique_ptr、shared_ptr和weak_ptr。对于这四个智能指针的原理实现、异同点,我将会用单独的文章篇幅从源码实现的角度去进行研究、讲解。本文的重点是分享auto_ptr智能指针。本文内容将包括:(1)auto_ptr智能指针的使用(2)auto_ptr的源码实现(3)原创 2022-03-16 11:03:34 · 648 阅读 · 0 评论 -
浅谈C语言中"#ifndef/#define/#endif"的作用
一.在c语言中,写头文件的时候,我们应当注重和遵守以下的两个原则: 1.所有的头文件中,必须要有这样的一个保护,即防止头文件#include重复。 2.所有的头文件只#include自己直接依赖的头文件。 在开发大型应用程序的时候,都是(非常有必要)将程序按照单元功能(模块)分开,即程序的模块化。然而有时因为模块功能函数划分太多,难以避免导致当前的头文件被重复#include的情况翻译 2016-07-13 18:08:46 · 3409 阅读 · 0 评论 -
有关内存的思考题
1. void GetMemory(char *p) { p = (char *)malloc(100); } void Test(void) { char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str);}请问运行Test函数会有什么样的结果? 答:会发生程序崩溃。 因为GetMemo原创 2016-08-23 13:56:10 · 553 阅读 · 0 评论 -
c经典编程实例
小球下落问题 一球从100米高度自由落下,每次落地后反跳回原高度一半,再落下。求它在第十次落地时,共经过多少米?第十次反弹多高?#include<stdio.h>int main(int argc, char **argv) { float i,h = 100,s = 100; //h代表高度,s代表路程 for(i=1;i<=9;i++) { h = h/2; s +=原创 2016-09-24 17:14:08 · 1224 阅读 · 0 评论 -
数据结构之顺序表3(顺序表的创建、插入、删除········)
顺序表的创建、插入、删除、定位等操作:/*********************filename: sqlist_test.cdatatime: XXXXauthor: *************************/#include<stdio.h>#include<stdlib.h>#define INITSIZE 100typedef int ElemType原创 2016-10-31 12:27:52 · 659 阅读 · 0 评论 -
c语言中:6个位运算符
c语言中的6位算术运算符分别是: 按位与:& 按位或:| 按位异或:^ 按位取反:~ 左移: << 右移: >>1.按位与(&)运算:将产与运算的两个数据进行逻辑与运算。 特点:只有当产与运算的两个数中的对应位分别为1时,其结果才为1,否则为0; 应用: 迅速清零,保留指定位置。原创 2016-08-15 22:30:04 · 937 阅读 · 0 评论 -
【025】数据结构之顺序表2
顺序表上的基本操作:1.初始化一个线性表(即创建一个空的线性表L)void initlist(sqlist *L){ L->data=(ElemType *)malloc(sizeof(ElemType));//存储空间的基地址 L-length = 0; //长度为0 L->listsize = INITSIZE; //当前的容量为初始量}2.求表长操作(计算出顺序表L中的全部元原创 2016-10-30 21:58:37 · 470 阅读 · 0 评论 -
cocos2d创建批处理精灵、粒子效果、触摸处理
1.创建批处理精灵bool _BatchNode::init(){ CCLayer::init(); //批处理精灵 CCSpriteBatchNode *node = CCSpriteBatchNode::create("CloseNormal.png"); addChild(node); //加入到渲染树中 for (auto i = 0; i < 2000;原创 2018-06-25 23:57:24 · 561 阅读 · 0 评论 -
Cocos2dx中精灵(CCSprite)、动画创建
1 .精灵的3种创建方法/* _MySprite自定义的一个类 */bool _MySprite::init(){ //方法1.直接使用图片来创建精灵 CCSprite* sprite = CCSprite::create("CloseNormal.png"); addChild(sprite); sprite->setPosition(ccp(100, 100原创 2018-06-25 23:56:42 · 1206 阅读 · 0 评论 -
Redis提示(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to pe
1.Redis登录进去显示如下错误提示:(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instanc原创 2017-07-17 20:04:43 · 6738 阅读 · 0 评论 -
MFC获取文件的绝对路径
----------------------------------------------------I.需求1.获取当前文件的绝对路径 /* firstName用于存放文件的绝对路径地址 */ #define MAXSIZE 1024 char firstName[MAXSIZE]; memset(firstName, 0x00, MAXSIZE); /* 1.获原创 2017-08-08 21:15:18 · 3438 阅读 · 0 评论 -
Windows字符集:string转为CString、char* 转为CString、CString转为char*
1. Windows字符集 多字节 1个字符对应1个字节 ANSI 宽字节 1个字符对应n个字节 Unicode utf-8 3个字节 gbk 2个字节 2. 多字节 转宽字节 L TEXT做了自动的编码适应 --字符串 TCHAR 也做了自动的编码适应 --字符 统计字符串的长度 * 多字节 char *p = "abcd"; int l原创 2017-07-18 17:45:04 · 611 阅读 · 0 评论 -
c缺陷与陷阱
不言而喻,《c缺陷与陷阱》是一本c/c++中的经典之作,文章简洁而不简单;作者在描述每一个复杂问题时,都尽量地用质朴而又形象的语句组织和描述,使得看似晦涩难懂的问题尽量的简单化,让人通俗易懂。其实这本书籍很早之前,就想拜读之,由于时间因素,一致拖到现在才终于抽出时间出来把它看完。虽然这本书籍零几年的时候就已经出版了,但是现在仍然在不断的印刷发行,没有绝版,由此可以看出本书的作用和地位绝对时不可忽视的原创 2017-04-26 19:18:05 · 774 阅读 · 2 评论 -
curl使用简介
/************************************************************************* * File Name: curl.c * Author: The answer * Function: Other * Mail: 2412799512@qq.com * Created Time: 20原创 2017-07-13 21:00:51 · 477 阅读 · 0 评论 -
libcurl库api使用
1.主要介绍libcurl库中CURLOPT_WRITEFUNCTION、CURLOPT_WRITEDATA和回调函数的功能与使用;其中定义的Date类的主要作用是用来完成数据的保存功能;/************************************************************************* * File Name: curl.c * Author:原创 2017-07-13 23:41:20 · 1106 阅读 · 0 评论 -
libcurl api介绍
一、curl简介curl是一个利用URL语法在命令行方式下工作的文件传输工具。它支持的协议有:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下转载 2017-07-13 23:53:43 · 542 阅读 · 0 评论 -
编写类String的构造函数、析构函数和赋值函数
编写类String的构造函数、析构函数和赋值函数class String { public: String(const char *str = NULL);// 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 String & operate =原创 2016-08-24 10:18:13 · 467 阅读 · 0 评论 -
c/c++面试题
C与C++各自是如何定义常量的?有什么不同?C中是使用宏#define定义, C++使用更好的const来定义。 区别:1)const是有数据类型的常量,而宏常量没有,编译器可以对前者进行静态类型安全检查,对后者仅是字符替换,没有类型安全检查,而且在字符替换时可能会产生意料不到的错误(边际效应)。2)有些编译器可以对const常量进行调试, 不能对宏调试。C中static有什么作用(1)隐藏原创 2016-10-07 22:10:59 · 394 阅读 · 0 评论 -
c/c++软件工程师面试题
一. 用变量a给出下面的定义 题外话: 我这里之所以不直接插入主题,而先引来这个题外话,是因为下面的内容与C语言的指针有关。 c语言的精华部分在于指针,如果能够正确并合理的利用指针,说明已经掌握了C语言。谭浩强在指针章节中说道,“没有掌握指针就是没有掌握c的精华”。因此,学习好指针并且能够掌握好指针是非常有必要的。还记得我自己在学习指针的时候,有几个问题总是困扰着我,它们分别是:指针数组原创 2016-08-24 09:52:09 · 5011 阅读 · 0 评论 -
C++面试题之找出下面的所有错误
请找出下面代码中的所有错误。说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”。#include "string.h"int main() { char *src = "hello,world"; char *dest = NULL; int len = strlen(src); dest = (char *)malloc(len); char原创 2017-02-22 20:33:33 · 2860 阅读 · 0 评论 -
技术支持面试题
一. 房间里有三盏灯,屋外有三个开关,分别控制这三盏灯,只有进入房间,才能看到哪一个电灯是亮的。请问:如何只进入房间一次,就能指明哪个开关控制哪个灯。 题意已知 :1.三个开关分别一一对应三盏灯 2.只能进入房间一次解析步骤:在屋外随意打开一个开关,并让其保持着打开的状态,持续为六七分钟左右。这时关掉开关,并打开另一个开关,这个时候进入房间,观看此刻是哪一盏灯亮,正在亮的灯则原创 2016-08-23 14:35:02 · 3868 阅读 · 0 评论 -
C语言面试题
一.曾经在面试一个c语言工程师职位时,遇到了下面这两个题,今天拿出来分享下: 1. 有5位运动员参加了10米的短跑比赛,有人让他们预测比赛结果 A选手说:B第一,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。 E选手说:我第四,A第一。 比赛结束后,每位选手都说对了一半,请编程来确定各选手的比赛名次。 分析:本题采用“穷举法”的思想原创 2016-07-14 17:36:18 · 2033 阅读 · 0 评论 -
c/c++工程师面试题
1.在网络通讯中,实现把一个int类型的值从服务器传输到另外一个电脑上,需要把一个int类型的变量放入到一个buffer中,和从buffer中取出一个int变量,要求buffer在不同平台之间通过网络传输,获取的int类型的数据是一样的,请写出来两种方法,一种为二进制的格式,另外一种为文本格式,要求:调用c的库函数实现;重点:字节的转换主要是针对整型int进行的,字符型由于是单字节,所以不存在这个原创 2017-08-15 15:02:39 · 654 阅读 · 2 评论 -
c/c++经典算法面试题
时针分针重合几次 表面上有60个小格,每小格代表一分钟, 时针每分钟走1/12小格,分针每分钟走1小格,从第一次重合到第二次重合分针比时针多走一圈即60小格,所以 60/(1-1/12)=720/11 每隔720/11分才重合一次(而并不是每小时重合一次)1440里有22个720/11,如果说算上0点和24点,那也是重合23次而已,但我觉得0点应该算到前一天的24点头上,所以每一天循环下来原创 2016-10-07 22:33:19 · 7738 阅读 · 0 评论 -
基类析构函数总是应该为virtual吗?
文章目录1. 多态实现的条件1.2 虚析构函数防止内存泄漏 1. 多态实现的条件 虚函数(Virtual Functions)允许程序在运行时根据调用成员函数的对象的动态类型来选择成员函数调用,这种约定使得C++支持面向对象的多态编程,而在实现多态时候,必须与对象继承、函数覆盖等紧紧关联。当调用一个普通成员函数(非virtual)、或是以类对象成员访问符方式调用一个函数时,它将调用一个指定的函数。对于多态的实现,通常需同时满足以下三个条件: (1) 有继承 (2) 虚函数重写原创 2021-05-18 15:47:37 · 184 阅读 · 2 评论 -
为什么空类的大小不为0
文章目录1. 空类1. 空类 所谓空类,意味着类中不携带任何数据。即该类中没有非静态成员函数、虚函数、虚基类等。理论上说,一个不携带任何数据的空类其所占用的内存空间大小应该是零,因为它不需要存储属于任何附加对象的数据。 实际情况果真如我们猜想的那样空类的大小为零吗?让我们拭目以待。//test.cpp#include <iostream>using namespace std;class Base{};int main(){ cout<&原创 2021-05-18 07:40:47 · 299 阅读 · 2 评论 -
getopt函数使用指南
文章目录1. C/C++ main函数原型1.1 命令行参数2. getopt函数2.1 命令、选项、选项参数及非选项参数2.1.1 选项参数2.1.2 可选的选项参数3. 环境变量POSIXLY_CORRECT4. getopt无处不在1. C/C++ main函数原型 当我们编写一个C/C++项目或是小demo时候,总是需要一个main函数(主函数),该main函数是程序执行时的第一个函数,也是整个项目或demo的入口,通常情况下,我们看到的函数原型如下:int main(void) {原创 2021-01-09 23:40:50 · 366 阅读 · 0 评论 -
为何C++拷贝构造函数参数必须为引用形式
文章目录1. 参数传递1.1 传值1.2 引用方式2. 初始化方式2.1 拷贝构造函数1. 参数传递 在C++中,有三种方法可将数据传递给函数,分别是:引用、传值和指针(C风格),它们在效率、存储以及性能方面都有着不同的特点。对于引用,本质上就是指针,它只是作为指针的语法糖(“语法糖”一词,来自阅读 前桥和弥《征服C指针》一书)。因此着重分析传值和引用两者的区别。1.1 传值 对于传值方式,当对象或内置类型(eg:int、double、float等)数据传递给函数时候,函数将会原创 2021-01-09 08:55:07 · 1193 阅读 · 0 评论 -
C++模板之泛型编程
文章目录1. 模板概述2. 模板分类2.1 函数模板2.2 类模板1. 模板概述 模板是泛型编程的基础。模板的定义是以关键字 template开始,后跟用小括号(<)和大括号(>)包围起来的若干以逗号(,)分隔的模板参数列表。如:template<typename T , typename U>其中template是建立模板的关键字,typename 是...原创 2019-11-05 16:14:17 · 356 阅读 · 0 评论 -
C++ STL编译报错:error: error passing 'const' as 'this' argument
用C++ STL(标准模板库)编写仿函数的时候,编译报错: error: passing 'const FindNameOrAddress' as 'this' argument of 'bool FindNameOrAddress::operator()(std::string, std::string)' discards qualifiers [-fpermissive] 其中:Find...原创 2018-07-05 01:02:37 · 14534 阅读 · 0 评论 -
c/c++之四舍五入函数
1. 在开发中,难免会遇到这样的情况,即需要对某段时间范围内的数据进行求和并取其平均值。这样就会涉及到小数的取舍问题。 比如:web需要通过REST协议向存储发起一个请求(该请求报文中有:起始时间、终止时间、人数、排队时间等)以获取某段时间范围内的数据,并且 存储需要返回该请求报文时间段内的:平均人数、平均排队等待的时间。那么现在需要考虑下面这几种情况: (1)存储返回给web的平均人数必须得...原创 2018-06-22 00:36:35 · 12677 阅读 · 0 评论 -
C++ vector、map中删除符合条件的元素
1. vector中常用的插入和删除操作insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count个元素ele. push_back(ele); //尾部插入元素elepop_back();//删除最后一个元素erase(const_iterator start, const_iterator end);//删除迭代器从start到原创 2017-09-30 15:49:41 · 23052 阅读 · 2 评论 -
C++11新特性之虚函数的override指示符
1. C++11中新增加了许多新的特性,这里对override这个新特性做一个简单的描述;override的英文意思为”覆盖“;2. 下面Demo中,Student类继承于People类(public公有继承),在People类中对PrintInf函数进行了虚函数的声明;为了实现多态(多态的3个条件:有继承、虚函数重写(覆盖)、有父类指针或引用指向子类对象);在父类中声明一个函数为virtual虚函原创 2017-09-03 23:24:53 · 2460 阅读 · 0 评论 -
C++4种类型转换
1.类型转换(cast)是将一种数据类型转换成另一种数据类型。例如,如果将一个整型值赋给一个浮点类型的变量,编译器会暗地里将其转换成浮点类型。转换是非常有用的,但是它也会带来一些问题,比如在转换指针时,我们很可能将其转换成一个比它更大的类型,但这可能会破坏其他的数据。 应该小心类型转换,因为转换也就相当于对编译器说:忘记类型检查,把它看做其他的类型。 一般情况下,尽量少的去使用类型转换,除非用原创 2017-08-24 16:31:45 · 665 阅读 · 0 评论 -
MFC之底层窗口创建
1.MFC中底层窗口的创建主要使用以下几个步骤:1.设计窗口类2.注册窗口类3.创建窗口4.显示和更新5.通过循环来取消息6.回掉函数 处理消息(窗口过程)2.实现效果如下:可以捕获到用户键盘、鼠标的按下事件等3.实现代码/* 底层窗口创建 6步骤 */#include<Windows.h> //底层实现窗口头文件#define true 1#define false 0/*原创 2017-07-18 14:21:48 · 719 阅读 · 0 评论 -
STL案例之学校演讲比赛
学校演讲比赛介绍 1)某市举行一场演讲比赛( speech_contest ),共有24个人参加。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。 2)比赛方式:分组比赛,每组6个人;选手每次要随机分组,进行比赛; 第一轮分为4个小组,每组6个人。比如100-105为一组,106-111为第二组,依次类推, 每人分别按照抽签(draw)顺序演讲。当小组演讲完后,淘汰组内排名最后的三个选手,然后继续原创 2017-06-06 12:59:13 · 706 阅读 · 0 评论 -
STL之iota使用
在c语言编程中,经常会用到atoi()函数,该函数的功能是将字符串转换成整数(int);如下:#include <stdlib.h> int atoi(const char *str);功能:atoi()会扫描str字符串,跳过前面的空格字符,直到遇到数字或正负号才开始做转换,而遇到非数字或字符串结束符('\0')才结束转换,并将结果返回返回值。参数: str:待转换的字符串【返回值原创 2017-05-20 21:32:03 · 8251 阅读 · 0 评论