C++
阿喵不是猫
逐渐变强中,有兴趣一起交流学习的同道中人可以邮件联系:
catlincao@yeah.net
展开
-
深入浅出之C++项目中的extern “C” {}
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:#ifdef __cplusplusextern "C" {#endif /*...*/ #ifdef __cplusplus}#endif它到底有什么用呢,你知道吗?而且这样的问题经常会出现在面试or笔试中。下面我就从以下几个方面来介绍它:1、#ifdef _cplusplus/#endif _cplusplus及发散...转载 2018-07-05 19:28:51 · 448 阅读 · 0 评论 -
搞懂strcpy和strcat函数
貌似笔试题喜欢搞这样的组合.--------------------- 作者:ProgrammerSLK 来源:CSDN 原文:https://blog.csdn.net/slk11580/article/details/79571478 版权声明:本文为博主原创文章,转载请附上博文链接!strcat函数:将两个char类型连接。char d[20]="GoldenGlobal"...转载 2018-11-26 15:58:39 · 975 阅读 · 1 评论 -
结构体定义的几种方式
--------------------- 作者:mengxiangjia_linxi 来源:CSDN 原文:https://blog.csdn.net/mengxiangjia_linxi/article/details/78168461 版权声明:本文为博主原创文章,转载请附上博文链接!共计有三种形式,分别介绍如下:1) 先定义结构体类型,再定义结构体类型变量:定义学生结构...转载 2018-12-04 17:32:52 · 4546 阅读 · 0 评论 -
list、vector使用erase()时需要注意的地方——迭代器失效
先说一下两者的优缺点吧。list与vector的区别vector相当于一个数组。 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默...原创 2018-11-27 22:12:03 · 8138 阅读 · 5 评论 -
结构体的使用——定义、自引用、互引用
转自:http://www.cnblogs.com/liangbo-1024/p/9188497.html1.结构体的定义与声明结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。 struct tag { member-list } v...转载 2019-04-13 15:48:04 · 2659 阅读 · 0 评论 -
GCC中C++源程序到可执行文件的四个步骤
最近在参加提前批的面试,今天面的是vivo的嵌入式。其中问到一个问题,c++的源程序到生成可执行文件的过程。喵哥吞吞吐吐的答出了一部分。现在面完了,在网上找了下标准答案:预处理、编译、汇编、链接。在Windows下,VC编译一个源程序都是一键完成,不知道过程,而我用Linux的gcc生成执行文件时,都是用g++ hello.cpp -o test然后用./test执行。原来...原创 2019-06-12 17:38:02 · 2829 阅读 · 0 评论 -
c++类的大小计算及分析windows中VS与Linux中gcc结果的差异
写在开头:文中提到Windows中VS用的是默认的MSVC编译器,Linux使用Gcc编译器。其实在Windows下使用MinGW可以得到与Gcc一样的结果。另外,在结构体中存在long,int的时候还需要考虑编译器数据模型:关于int,long等数据类型占用字节数喵哥最近在复习C++虚函数的时候遇到一道题,关于计算类的大小的问题,为了吃透这种题目,在网上找到几篇文章学习了一下。也...原创 2019-06-10 14:56:15 · 651 阅读 · 0 评论 -
探秘C++仿函数
最近喵哥遇到一个问题:如何在不借助额外空间(新建vector等)来实现map自己的想法(不只是表面的升序、降序)排序(sort只适用于顺序容器,map并不可以使用)。如果忽略“不借助额外空间这个要求”,完全可以用一个vector来实现:#include <iostream>#include <map>#include <algorithm>#in...原创 2019-07-03 11:44:59 · 390 阅读 · 0 评论 -
无符号整型与有符号整型的比较
喵哥最近遇到一个问题,比较两个数的时候经常会出现很严重的bug,比如:unsigned int a = 0;int b = -2;if (a < b) b = 1;cout << b << endl;乍一看这段代码输出的应该是-2,0肯定不会小于-2嘛,但是事实上,“b = 1;”这行代码是会被执行的。如果大家对算术转换比较熟悉的话,应该会想到这应该...原创 2019-06-29 14:35:21 · 8545 阅读 · 2 评论 -
C语言与C++的内存管理区别 以及 new与malloc的10点区别
喵哥最近面试的时候遇到这么一道题:C语言与C++的内存管理区别?喵哥当时回答的很草率,属实没有深入了解过,也没有怎么在意。今天把这道题总结一下。内存的分区在C/C++中,内存分为5个区:栈、堆、自由存储区(C++才有)、全局/静态存储区和常量存储区。栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区,里面的变量通常是局部变量、函数参数等。堆: 操作系统层...转载 2019-07-10 17:34:51 · 1319 阅读 · 0 评论 -
牛客网——const二级指针报错: 无法从“int **”转换为“const int **”
喵哥在牛客网遇到这么一题选择题:class A { };void f(const A** p) {} void g(const A * const *p) {}void k(const A*&p) {}int main(){ const A * ca = new A(); A*a = new A(); A** p = &a; k(ca); //1...原创 2018-11-20 17:19:13 · 1849 阅读 · 0 评论 -
“探坑”——在C++中执行python脚本的艰辛尝试
之前的一篇博客提到,喵哥打算用C++调用python,然后在python中执行powershell,但是在初次尝试后,喵哥发现这不是一个简单的工作,有很多坑需要注意!此篇文章主要围绕如何在C++中调用python(windows10)来陈述喵哥遇到的一些初学者需要留心的地方。在VS2013中配置python环境跟大部分环境配置差不多,主要是在项目里加入头文件和库文件。需要注意的是VS的项目...原创 2018-11-12 20:19:42 · 4059 阅读 · 1 评论 -
LPTSTR,CString互转及字符串类操作说明
---LPTSTR 转换成 CString---(1)直接赋值CString strText;LPTSTR lpszText = _T("LPTSTR >> CString");strText = lpszText;::MessageBox( NULL, strText , _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK );(...转载 2018-07-19 14:19:53 · 593 阅读 · 0 评论 -
“atof”: 不能将参数 1 从“CString”转换为“const char *”
问题描述:m_Data[number]=atof(strtemp);其中,m_Data为double型,number为long型,strtemp为CString型的。为什么会出现这样的错误?error C2664: “atof”: 不能将参数 1 从“CString”转换为“const char *”解决:用_ttof代替atof 或 _wtof(str);...转载 2018-07-19 16:39:51 · 1384 阅读 · 0 评论 -
实现外部程序根据参数调用、控制目标程序——ShellExecute()函数的详解及相关知识的拓展
喵哥最近在做一个需要远程控制相机的项目,其中一个环节就是需要用一个控制端的exe去调用相机运行的exe,还需要根据控制端提供的参数对相机作出相应的控制动作。另外,如果有做类似项目的朋友,希望可以交流一下经验,共同进步。目录WinExecShellExecute接收参数根据以往的经验,需要在外部执行文件开启一个程序的方法就是使用WinExec()函数,这个函数的参数简单,用起来也...原创 2018-07-20 15:31:26 · 1484 阅读 · 1 评论 -
学习《面向对象程序设计——刘正林 著》—— #define 预处理语句出现的奇怪现象
在刘先生所著的《面向对象程序设计》中提到,由于#define预处理器没有较好的检查机制,使得在预处理语句中的宏定义会存在程序瑕疵,书中所举列子如下:#include <iostream>using namespace std;#define MAX(x, y) ((x) > (y)) ? (x) : (y)void main(){ int a(7), b(0),...原创 2018-08-09 11:11:27 · 235 阅读 · 0 评论 -
C++ 11的Lambda Expressions
喵哥第一次接触Lambda Expressions是在研究Concurrency Runtime,出现的触不及防,看到那一堆代码,整个人都不好了,意识到如果要继续学习Concurrency Runtime 就必须把Lambda Expressions搞定,所以花了点时间了解了一下,也花点时间总结一下。先给个Lambda Expressions 的大致印象:#include <ios...原创 2018-08-05 10:36:46 · 359 阅读 · 0 评论 -
C++读写TXT文件的小结
提到C++读写TXT文件,相信大部分人都会想到fstream类及其两个子类——ifstream和ofstream,这些类的使用在网上已经有很多介绍了,这个小结比较“自私”地给自己总结一下。首先把fstream的大体用法介绍一下。 fstream提供了三个类,用来实现c++对文件的操作。(文件的创建、读、写)。 ifstream -- 从已有的文件读入 ofst...原创 2018-08-24 00:41:29 · 929 阅读 · 0 评论 -
关于redis(C++)中管理pub\sub的代码关键理解
最近在用redis的pub\sub功能来实现群发消息,控制6个类似的软件,但是在使用pub\sub的管理代码时发现了一个有趣的事情,特意记录下来,以免日后忘记。PubSubManager.cpp中有一段特有意思的代码:void PubSubManager::PrintReply( redisReply *reply ){ switch (reply->type) { cas...原创 2018-08-28 10:09:28 · 1312 阅读 · 0 评论 -
四个dll文件引发的“血案”——调用DLL中的函数
喵哥项目的合作公司最近给喵哥出了个难题——项目中激光雷达的模块是公司一个工程师负责的,工程师比较务实,在网上一个VB.NET代码的基础修改了一些细节,就交差了,的确可以用,但是最近工程师退出了这个项目,boss打算让喵哥接手这个模块,喵哥很慌,但还是硬着头皮上了。面临的问题1.一个用VB.NET(我不熟悉的语言)编写的程序; 因此我打算把它改写成VC++的形式2.只有四...原创 2018-09-21 21:48:56 · 2074 阅读 · 1 评论 -
#include<algorithm>及其常用函数
#include<algorithm>:algorithm意为"算法",是C++的标准模版库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模版函数。accumlate : iterator 对标志的序列中的元素之和,加到一个由 init 指定的初始值上。重载的版本不再做加法,而是传进来的二元操作符被应用到元素上。adjacent_different :创建一个新序...转载 2018-10-10 23:18:55 · 11414 阅读 · 0 评论 -
记一件有意思的事
写生活日志么?想都别想:)这件事跟未初始化的非静态局部变量的值有关。通常,作为一个合格的程序员,定义变量都会给它初始化,特别是非静态的局部变量,使用未初始化的非静态局部变量会发生错误。然而,喵哥今天在看书的时候遇到这么一个奇葩的例子:#include <bits/stdc++.h>using namespace std;int global_init_var = 0...原创 2019-07-19 23:51:11 · 183 阅读 · 0 评论