c++学习笔记小记(1)

c++在一个cpp文件中调用另一个cpp文件的函数的两种方法 有时候写代码为了简便,会将一些函数方法单独在一个cpp的源文件中定义,然后在另一个源文件中需要用到自定义的函数时直接调用就可以了!学过c++的人可能最熟悉的方法还是利用头文件来进行调用,其实还有一种c语言当中的方法一般情况下同样可以适用与c++中! 方法1:创建头文件 举个简单的例子: 首先创建一个method.h头文件,声明一个求最大值的函数max(int x,int y),然后再创建一个同名的源文件method.cpp,在该文件中实现函数max(int x,int y)的功能。代码如下: //metho 阅读详情

1. 数据类型--有符号数和无符号数之间的转化

含有无符号类型的表达式

unsigned u = 10;

int i = -42;

cout<< i + i << endl;

//结果为-84,计算结果没问题

但若是计算过程为:

cout << u + i << endl;

//结果为4294967264,结果有问题,

有符号数和无符号数计算过程无符号首先会转化为无符号数,

42的二进制表达式为:00000000  00000000  00000000  00101010

                   反码为:11111111  11111111  11111111   11010101

                  补码为:11111111   11111111  11111111   11010110(-42)

所以该补码若是表示无符号数,大小为:4294967254,然后加10,结果即为4294967264(相当于32位全1结果为4294967295,然后减去41即为有符号数-42代表的无符号数大小。

2. extern变量

extern生命变量的时候不能对变量赋值,否则就变成了对变量的定义,而不是声明。

extern int i;   //声明变量int i

extern int i=32;//定义变量i,而不是声明,已经抵消了extern的作用,此处的i和别处文件中的i不是同一个了

3. 复合类型

引用:引用声明的时候必须被初始化,不能定义引用的引用,同时引用的数据类型必须与被绑定的变量的数据类型保持一致

指针:不能定义指向引用的指针,指针的类型要与所指的对象严格匹配

不存在引用的指针,但存在指针的引用

离变量最近的符号对变量的类型有最直接的影响:int *&r;  r是一个引用,是指针的引用,指向int类型

4. const限定符

const对象定义的时候必须进行初始化,同时const变量不管是声明还是以定义,都需要添加extern关键字

const对象存在引用,但是根据const对象的特性,const对象的引用不能用来修改所绑定的const对象

5. 指针和const

const int *i=&p;//这里的p可以是const,此时不能通过i和p来修改p的值;若p不是常量,则不能通过指针i来修改p的值,但是                              可以通过其他方式修改p的值

int *const i=&p; //这里指针i本身是一个常量,i只能指向p,无法指向其他地址,但是可以通过i来修改p的值

const int *const i=&p; //这里的指针i本身是一个常量,同时又是指向常量的指针,也就是指针的值本身不能改变,也不能通                                            过指针i来修改p的值

C++】使用 yaml-cpp 库操作 YAML 配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。YAML 是一种人类可读的数据序列化格式,它使用缩进和特定的符号来表示数据结构。在本文中,我们将详细介绍如何在 C++ 中使用yaml-cpp库来解析和生成 YAML 格式的数据。 阅读详情

相关推荐

C++ 一个函数调用其他.cpp文件中的函数

使用VC或VS创建C++项目的时候,会自动产生许多文件夹,其中有一个文件夹->源文件: 在该文件下可以自定义许多.cpp文件,但是需要注意的是这里面的各个文件只能有一个文件中含有main()函数, 而且各个文件中不能使用相同的函数名进行定义; 那么要那么多文件放在项目中有什么用呢? 当然这里C++是提供一个文件调用其他文件中函数的功能的, 这就可以让我们自定义一个只包含main()...

4万+

算术类型转化_无符号数 和 带符号数

算术类型转换_无符号数 和 带符号数

qq_42303573的博客 421

【log4】c++日志工具之——log4cpp

1、log4cpp概述 Log4cpp是一个开源的C++类库,它提供了C++程序中使用日志和跟踪调试的功能,它的优点如下: 提供应用程序运行上下文,方便跟踪调试; 可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内存、syslog服务器、Win事件日志等; 可以动态控制日志记录级别,在效率和功能中进行调整; 所有配置可以通过配置文件进行动态调整; 多语言支持,包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(...

我的笔记本 8028

c++ unsighed相减问题

unsigned u1 =42,u2=10; cout&lt;&lt;u2-u1&lt;&lt;endl;输出结果为4294967264。原因:无符号整数相减,结果为负数时,会取该负数mod(4294967296)的值。          unsigned 的最大值为:           (10-42)mod(4294967296)4294967264(商取-1,遵循让商向负无穷靠近的原则...

sinat_37816910的博客 791

关于无符号相减得负数的问题

刚看c++Primer,关于无符号数计算问题。 #include <iostream> using namespace std; int main () { unsigned u=10,u2=42; int i=10,i2=42; cout<<u2-u<<endl;// 32 cout<<u-u2<<endl;// 4294967264 cout<<i2-i<<endl;//

LLX0502的博客 2991

c++ primer 5th:无符号数的转换

假设 unsinged u1 = 10, u2 = 42; 输出u1-u2是4294967264,为什么得到这个结果呢? 首先无符号数在内存中所有的bit都是表示值的,那么u1-u2 = -32,这个数在内存中的表示应该是1xxxxxxxxxx.它的值是 –2^(31) + a(a由最高位后面的二进制表示) = -32。它会被强制转换为无符号数,这是最高位的1表示不是负数了,而是2^31,从而该

pyb的博客 741

Cpp入门基础

定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2401_86658278的博客 3546

C++中在一个cpp文件中引用另外一个cpp文件的方法

创建1个func2.cpp 通过include 引入func1.cpp 来使用func1里面的方法(如果有单独的头文件,比如func1.h 可以通过#include“func1.h”)C++中在一个cpp文件中引用另外一个cpp文件 可以通过导入cpp文件或者.h文件来实现,类似python中的import 导入。

小牧在一直在学习,在前进的道路上大家一起学习,进步。 7939

Cpp指针的delete操作 - 小记

关于Cpp中delete指针并防止野指针出现的操作顺序的效果对比验证

LXT13592800607的博客 1658

c++ 开发中利用yaml-cpp读写yaml配置文件

在程序员的开发生涯中,读写配置文件必不可少。 配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。 配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。 今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。 如果有 Python 开发经验的同学...

frank 的专栏 6万+

C++学习笔记(七)——log4cpp

C++学习笔记(七)——log4cpp log4cpp的下载与安装 1.下载log4cpp-1.1.1.tar.gz 2. 安装:先将log4cpp-1.1.1.tar.gz拖入用户主目录, 然后再执行以下步骤: $ sudo cp log4cpp-1.1.1.tar.gz /usr/local $ su # cd /usr/local # tar zxvf log4cpp-1.1.1.tar.g...

weixin_39828926的博客 508

小记CPP文件编译工具

区分于理解gcc、g++、make、cmake、makefile、cmakelist 1、gcc与g++ gcc于g++都属于GNU Compiler Collection(就是GNU的编译套件),也可以简单认为就是编译器,它可以编译C、C++\Objective-C、Fortean、Java等多种语言。 在实际使用中,我们更习惯用gcc指令编译C语言程序,使用g++指令编译C++代码,但是gcc 指令也可以用来编译 C++ 程序,同样 g++ 指令也可以用

qq_51976130的博客 731

c++ 利用yaml-cpp读写yaml配置文件

在程序员的开发生涯中,读写配置文件必不可少。 配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。 配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。 今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。 如果有 Python 开发经验的同学,可能知道用 Python 读取 yaml 是再简单不过了,但是 C++ 麻烦一点,它需要你自己下载源码然后编译

newbeixue的博客 3995

C++11 Visual Studio 2019 C++安装matplotlib-cpp绘图

使用C++调用matplotlib-cpp绘图

记录专业模型开发、算法程序设计、软件学习笔记、生活日志。 9327

C++中.cpp和.hpp的区别

c++中 cpp和hpp 首先,我们可以将所有东西都放在一个.cpp文件内,编译器会将这个.cpp编译成.obj,即编译单元。一个程序可以由一个编译单元组成,也可以由多个编译单元组成。一个.cpp对应一个.obj,然后将所有的.obj链接起来(通过一个叫链接器的程序),组成一个.exe,即程序。如果一个.cpp要用到另一个.cpp定义的函数怎么办,只需在这个.cpp中写上它的函数声明。 链接器将所...

Qzx9059的博客 1万+

yaml-cpp学习笔记

学习如何写配置系统的时候用到了 yaml-cpp 读写 yaml 配置文件,打算做一点简单的学习笔记记录一下基本用法。

学习侠的博客 2375

whisper.cpp 学习笔记

whisper 是基于 OpenAI 的自动语音识别(ASR)模型。他可以识别包括英语、普通话等在内多国语言。

m0_37749564的博客 5469
上一篇: c++语言应用------基于visual studio的聊天软件的实现
下一篇: c++学习笔记小记(2)
sswzw_cll
博客等级 码龄11年 83粉丝 27原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值