
C++
文章平均质量分 52
c ++ 基础,遇到的一些问题解决。
My.科研小菜鸡
这个作者很懒,什么都没留下…
展开
-
c++代码书写规范
参考谷歌开源项目谷歌开源规范原创 2022-03-30 00:18:03 · 908 阅读 · 0 评论 -
C语言中 “>>=,<<=,&=,^=,|=” 分别表示什么意思? 举例说明
初学开发的人,总是搞不清“或“运算和“异或“运算的本质区别,只知道对于或运算来说,结果是:只要有一个为1,就为1,只有都为0才为0;大家仔细思考,异或没有既是中国人,又是美国人的情况,因为一个人的国籍只可能是一种,这就是异或与或最大的差别,在异或中,测试对象只可能满足一个条件,而在或运算中,测试对象可以同时满足2个条件。3)既是AB型,又有学生证的人,两种条件都满足,这是或运算最大的特点。5、C语言中的 |= 意思为:按位或后赋值。2)AB型的人,可能不是学生啊!原创 2022-10-13 14:19:31 · 20947 阅读 · 0 评论 -
C语言结构体初始化的四种方法
intfirst;};需要注意对应的顺序,不能错位。因为是逐个确定的赋值,无所谓顺序啦。这种方法类似于第一种方法和第二种方法的结合体,既能初始化时赋值,也可以不考虑顺序;这种方法在Linux内核(kernel)中经常使用,在音视频编解码库FFmpeg中也大量频繁使用,还是很不错的一种方式。这种方法和前一种类似,网上称之为C++风格,类似于key-value键值对的方式,同样不考虑顺序。second0.25};原文链接https。...原创 2022-07-21 21:59:55 · 6255 阅读 · 0 评论 -
atan2() 反正切函数,atan() 的增强版,能确定象限
atan2() 函数的功能是求 y/x 的反正切值。atan2() 是 atan() 的增强版,能够确定角度所在的象限。atan2(y,x)求解的是(x,y)点相对与x轴的夹角,取值范围是(-pi,pi)原创 2022-07-09 13:28:58 · 1621 阅读 · 0 评论 -
c语言链表--待补充
链表都有一个头指针一般以head表示,存放一个地址。链表的节点分为头节点和一般节点,头节点没有数据域,一般节点包含数据域和指针域。链表可以视为一个功能极为强大的数组可以动态的进行分配:...原创 2022-07-01 15:52:37 · 283 阅读 · 0 评论 -
C++ 中auto基本用法
auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子:这种用法就类似于C#中的var关键字。auto的自动类型推断发生在编译期,所以使用auto并不会造成程序运行时效率的降低。而是否会造成编译期的时间消耗,我认为是不会的,在未使用auto时,编译器也需要得知右操作数的类型,再与左操作数的类型进行比较,检查是否可以发生相应的转化,是否需要进行隐式类型转换。上面举的这个例子很简单,在真正编程的时候也不建议这样来使用auto,直接写出变量的类型更原创 2022-07-01 15:16:03 · 394 阅读 · 0 评论 -
C++ 单引号和双引号区别
单引号和双引号区别原创 2022-06-08 18:17:51 · 4148 阅读 · 5 评论 -
C++ sleep() 和 usleep()
sleep() 和 usleep()主要区别前者单位为秒,后者为微妙(*1e6)C++ sleep() 和 usleep()代码如下:设置一个时间参数,分别向sleep()和usleep()方法传入该参数,打印sleep和usleep前后的系统时间戳#include <time.h>#include <stdio.h>#include <iostream>#include <unistd.h>using namespace std;int .原创 2022-05-25 18:26:37 · 2320 阅读 · 0 评论 -
c++中setw()与setfill()的用法详情
1. 在C++中,setw(int n)用来控制输出间隔。例如:cout<<'s'<<setw(8)<<'a'<<endl;//在屏幕显示//s a //s与a之间有7个空格,加上a就8个位置,setw()只对其后面紧跟的输出产生作用,//如上例中,表示'a'共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,//则按实际长度输出2. setw()默认填充的内容为空格,可以setfill()配合使用设置其他字原创 2022-05-23 01:22:34 · 2775 阅读 · 0 评论 -
C++编程语言中stringstream类介绍
本文主要介绍 C++ 编程语言中 stringstream 类的相关知识,同时通过示例代码介绍 stringstream 类的使用方法。1 概述 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操作。 主要用来进行数据类型转换,由于 使用 string 对象来代替字符数组(snprintf 方式),避免了缓冲区溢出的危险;而且,因为传入参数和目标对象转载 2022-05-23 01:13:07 · 262 阅读 · 0 评论 -
char类型数组
字符数组(一维、二维)字符数组是数组元素为char类型的一种数组。凡是适合数组的定义和赋值,也都适合于字符数组。由于C语言没有提供字符串类型,字符串一般用一维字符数组来存放,而二维字符数组可以存放多个字符串。一、字符数组的定义字符数组定义的一般格式为:一维字符数组:char 数组名[整型常量表达式];二维字符数组:char 数组名[整型常量表达式1][整型常量表达式2];如: char c[10],c1[2][15];二、字符数组的初始化和赋值字符数组的初始化与赋值与一般数组的很相似,但转载 2022-05-22 14:56:37 · 22162 阅读 · 1 评论 -
C语言格式输出函数printf()详解
参考:https://blog.youkuaiyun.com/qq_25544855/article/details/811468001.基本用法printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。函数原型:int printf ( const char * format, ... );返回值:正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输原创 2022-05-22 14:41:48 · 3085 阅读 · 1 评论 -
std::fopen() fscanf() c_str()
1.实例: vector<double> GPSTimeList; { FILE* file; //dataPath为:Dates/2011_10_03_drive_0027_sync/ file = std::fopen((dataPath + "oxts/timestamps.txt").c_str() , "r");//以只读方式打开文件 if(file == NULL){ printf("cannot find file: %soxts/timestamp原创 2022-05-22 14:26:18 · 270 阅读 · 0 评论 -
string中c_str() strcpy()函数讲解
1. c_str()的语法语法/原型: const char *c_str()c_str()函数返回一个指向正规C字符串的指针常量,内容与本string串相同。这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针。1.2.应用比如:最好不要这样: char* c;2 string s="1234";3 c = s.原创 2022-05-22 14:25:38 · 1199 阅读 · 0 评论 -
深入 char * ,char ** ,char a[ ] ,char *a[] 内核
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。1. 相关概念1.1 数组的本质数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。1.2 指针指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的地址。。由于地址也是整数,在32位平台下,指针默认为32原创 2022-05-22 13:48:15 · 167 阅读 · 0 评论 -
C++ extern定义多文件共享全局变量
思路参考知乎提问“在C++中如何使用全局变量?”#include <iostream>#include <string>std::string msg; //这个就叫全局变量int main(){ msg = "Hello, world!"; std::cout << msg << std::endl; return 0;}不过呢,这么做以后你会逐渐逐渐遇到各种问题,比如说多个.cpp文件都要用到同一个全局变量咋办?你需要原创 2022-05-21 23:37:57 · 1174 阅读 · 0 评论 -
if else 一个有趣的问题
假设if条件语句更改条件,试想是否会运行else里边的语句?int a= 1;int b =2;if(a<b){cout<<"a"<<a;a=2;b=1;}else{cout<<"a"<<a;cout<<"b"<<b;}解答if…else…语句判断时只会触发其中一个,也就是进了if,就不会再去判断else。...原创 2022-05-17 00:27:35 · 193 阅读 · 0 评论 -
c++定义和声明
对于变量来说,定义就是声明.例如: int a; 我们可是说它是定义也可以说它是声明。但是对于函数来说定义和声明完全不是一回事 。//这是函数的声明 void sum(int a,int b);//函数的定义 void sum(int a,int b) { }整体是函数的定义 ,函数的定义没有分号 而且要加上一对花括号 ,里边是函数的实现。函数一定要在定义前声明否则会报错 。我一般在主函数前写上函数的声明 ,然后在主函数之后写函数的定义。当然原创 2022-05-16 22:23:39 · 579 阅读 · 0 评论 -
程序阅读技巧
快捷键:ctrl + f 查找侧边键返回、前进查看当前某个变量值:如果是类成员变量:(1)构造类时(2)当前代码页内赋值如果只是一个普通变量那么一定在当前代码页查看方式先看框架再看具体代码最后了解算法...原创 2022-05-16 21:05:55 · 150 阅读 · 0 评论 -
c++ 独立大括号
c++ 语言中。{}一般是在函数、类之下使用,但是在阅读代码过程中发现一种奇怪的现象。 bool test(){ ... \\ Some unrelated code { \\ Some other code ... } \\ Somce unrelated code ...}在代码中有一个多余的大括号,但是不知道是做什么用的,因为他不和前面或后面的任何代码有关。解释这个多余的大括号提供了一个新的作用域。 加入这个多余大括号的原因有两个:可以更干净的声明新变量在C转载 2022-05-09 13:37:54 · 1048 阅读 · 0 评论 -
c++ this指针
this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。所谓当前对象,是指正在使用的对象。例如对于stu.show();,stu 就是当前对象,this 就指向 stu。下面是使用 this 的一个完整示例:#include <iostream>using namespace std;class Student{public: void setname(char *name); void setage(int转载 2022-05-08 23:18:52 · 84 阅读 · 0 评论 -
#ifdef、 #define、 #else、 #endif
1.ifdef用法#ifdef条件编译一般情况下,源程序中所有的代码都会参加编译,但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”,通过#ifdef来实现,具体用法如下:#ifdef 标识符//程序段1#endif当然,有时也希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句,此时用 #ifdef 和 #else 来实现,具体用法如下:#ifdef 标识符//程序段1#else//程序段2#e原创 2022-05-08 17:58:51 · 9804 阅读 · 0 评论 -
C++中NULL和nullptr的区别
在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有二义性的问题,为了弄明白这个问题,我查找了一些资料,总结如下。一、C程序中的NULL在C语言中,NULL通常被定义为:#define NULL ((void *)0)所以说NULL实际上是一个空指针,如果在C语言中写入以下代码,编译是没有问题的,因为在C语言中把空指针赋给int和char指针的时候,发转载 2022-05-08 17:35:35 · 3146 阅读 · 2 评论 -
函数括号后加 “:”表示赋值
1、c++成员函数后面跟“:”表示的是赋值,这是c++的特性如下:A( int aa, int bb ):a(aa),b(bb){}相当于A( int aa, int bb ){a=aa;b=bb;}2、c++构造函数后面跟“:”也表示赋值1)对含有对象成员的对象进行初始化类line有两个私有对象成员startpoint、endpoint,line的构造函数写成:line(int sx,int sy,int ex,int ey):startpoint(sx,sy),endpoi转载 2022-05-06 02:12:56 · 873 阅读 · 0 评论 -
Eigen介绍及简单使用
一.Eigen介绍Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法,同时支持多平台。Eigen采用源码的方式提供给用户使用,在使用时只需要包含Eigen的头文件即可进行使用。之所以采用这种方式,是因为Eigen采用模板方式实现,由于模板函数不支持分离编译,所以只能提供源码而不是动态库的方式供用户使用。矩阵的定义:Eigen中关于矩阵类的模板函数中,共有六个模板参数,常用的只有前三个。其前三个参数分别表示矩阵元素的类型、行数和列数。矩阵定义时可以使用Dynamic转载 2022-05-05 13:42:20 · 3113 阅读 · 0 评论 -
指针和引用的区别
效果来看:两者都会改变实参,效果基本相同使用来看:指针更复杂建议使用引用的方式//1. 值传递,原始的a b值不改变void mySwap01(int a, int b) {int temp = a;a = b;b = temp;}//2. 地址传递,原始的a b值改变void mySwap02(int* a, int* b) {int temp = *a;*a = *b;*b = temp;}//3. 引用传递,原始的a b值改变void mySwap03(int&原创 2022-05-05 11:55:06 · 199 阅读 · 0 评论 -
数组名代表的是数组第一个元素的地址
利用指针访问数组中元素示例:int main() {int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//数组名arr代表的是数组第一个元素的地址int * p = arr;//指向数组的指针cout << "第一个元素: " << arr[0] << endl;cout << "指针访问第一个元素: " << *p << endl;for (int i = 0; i < 10; i++)原创 2022-05-05 10:31:38 · 316 阅读 · 0 评论