c/c++
c/c++相关知识
小魔王降临
人生需要不断进取和学习,生活需要时刻拼搏!!
展开
-
基于文件的I/O
创建新文件ate 并不会导致create属性,app可造成out属性in 表示只读属性out表可写属性+create shuxingin+out 表只读+可写属性(没有创建属性)用fstream在指定文件流模式的情况下也可以自动新建文件:fstream oo("aa.txt",ofstream::out);或者fstream oo("aa.txt",ofstr...原创 2019-05-30 09:17:46 · 169 阅读 · 0 评论 -
基于控制台的I/O
C++输入cout与输出cin 输入和输出并不是C++语言中的正式组成成分。C和C++本身都没有为输入和输出提供专门的语句结构。输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的。在编写C++程序时,如果需要使用输入输出时,则需要包含头文件 <iostream>。在 <iostream> 中定义了用于输入输出的对象。例如:常见的 cin...原创 2019-05-29 08:50:46 · 321 阅读 · 0 评论 -
I/O(输入/输出)
基于控制台的I/O iostream 库的基础是两种命名为 istream 和 ostream 的类型,分别表示输入流和输出流。流是指要从某种 IO 设备上读出或写入的字符序列。术语“流”试图说明字符是随着时间顺序生成或消耗的。 标准库定义了 4 个 IO 对象。处理输入时使用命名为 cin(读作 see-in)的 istream 类型对象。这个对象也称为标...原创 2019-05-21 08:58:09 · 764 阅读 · 0 评论 -
C++运算符重载(01)
运算符重载简介 所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。同样运算符重载(Operator Overloading)可以让同一个运算符可以有不同的功能。格式C++规定,下标运算符[ ]必须以成员函数的形式进行重载。该重载函数在类中的声明格式如下:返回值类型 & operator[ ] (参数);const 返回值类型 & operator[ ] (参数) const...原创 2021-12-02 10:48:48 · 913 阅读 · 0 评论 -
static 静态函数
static 关键字原创 2022-09-29 09:30:07 · 519 阅读 · 0 评论 -
cmake vs openmp
openmp原创 2022-08-24 17:53:37 · 471 阅读 · 0 评论 -
C++/C 可变参数的宏(__VA_ARGS__)
__VA_ARGS__原创 2022-06-30 14:36:24 · 674 阅读 · 0 评论 -
_getcwd, _wgetcwd,__makepath_s
_makepath_s/_splitpath_s从组件创建路径名/从路径拆分目录 char path_buffer[_MAX_PATH]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; errno_t err; err = _makepath_s(path_buffer, _MAX_PATH, "c", "\\sample\\crt\\", "crt_原创 2022-04-13 14:04:04 · 739 阅读 · 0 评论 -
c ++a/a++汇编原理
代码用汇编解释前++和后++ int a = 5; int b = ++a + 1; std::cout << "b = " << b << std::endl; int c = 5; int d = c++ + 1; std::cout << "c = " << c << std::endl;前++ int a = 5;01051CF8 mov dword ptr [a],5原创 2022-03-19 17:48:44 · 545 阅读 · 0 评论 -
c/c++/MFC变量转换
头文件#pragma once#include <string>using namespace std;class CVariable{public: CVariable(void); ~CVariable(void);public: //char* int2char(const int iSrc, char chDst[256], int iRadix = 10); //C语言 char* int2char(const int& iSrc); i原创 2022-03-18 16:31:10 · 586 阅读 · 0 评论 -
C语言返回字符串的四种方式
方法一:将字符串指针作为函数参数传入,并返回该指针。strcpy()函数应该就是采用的这种方法,strcpy()是C语言中的一个复制字符串的库函数,以下将详细解释说明一下:函数声明char *strcpy(char *dst, const char *src)实现代码char * strcpy(char *dst,const char *src) { if((dst...原创 2019-04-06 16:10:42 · 13637 阅读 · 0 评论 -
变量的生命周期与作用域
变量的类型局部变量和全局变量 对于C++变量来说,有两个属性非常重要:作用域和生命周期,它们从两个不同的维度描述了一个变量的时间和空间。局部变量也称为内部变量。 局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。 全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源...原创 2019-05-27 09:13:37 · 480 阅读 · 0 评论 -
函数 log()
exp(n)值为e^n次方;log函数包括两种函数:一种以e为底的log()函数;另一种为以10为底的log10函数。e就是自然对数,大约等于2.71828.#include<iostream>#include<cmath>using namespace std;void main(){ double a=10,b=20; cou...原创 2019-05-09 10:28:32 · 12026 阅读 · 2 评论 -
二维数组
定义类型说明符 数组名[ 常量表达式][ 常量表达式];int a[3][4];表示定义了一个 3×4,即 3 行 4 列总共有 12 个元素的数组 a。这 12 个元素的名字依次是:a[0][0]、a[0][1]、a[0][2]、a[0][3];a[1][0]、a[1][1]、a[1][2]、a[1][3];a[2][0]、a[2][1]、a[2][2]、a[2][...原创 2019-05-24 09:12:34 · 556 阅读 · 0 评论 -
continue、break、return用法及区别
1、return 语句的作用return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。 return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。 return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。2、break 语句的作用break在循环体内,强行结束循环的执行,也就是结束整...原创 2019-04-07 15:15:38 · 1109 阅读 · 0 评论 -
详解char* p及char p[]
char* p():声明一个函数返回值为一个指向字符(串)的指针。#include <iostream>using namespace std;char* p(){ static char str[100] = { "Hello World!!" }; return str;}void main(){ char* str = nullptr; str =...原创 2019-04-14 12:01:10 · 36799 阅读 · 3 评论 -
C++ 函数模板(01)
定义template <class 形参名,class 形参名,......> 返回类型 函数名(参数列表){ 函数体}其中template和class是关键字,class可以用typename 关键字代替,在这里两者没区别,<>括号中的参数叫模板形参,模板形参和函数形参很相像,模板形参不能为空。函数模板不是函数 C++是一种强类型的语言,在不知道 T 的具体类型前,无法确定 swap 需要占用的栈大小(参数栈,局部变量), 同时也不知道函数...原创 2022-01-19 10:00:34 · 202 阅读 · 0 评论 -
new的基本用法
开辟单变量地址空间方式一:开辟变量地址空间 //new int-- - 开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) int* p = new int; *p = 1; cout << "方式一动态分配存储空间结果:\n" << "*p= " << *p << std::endl;...原创 2019-04-07 14:06:12 · 10407 阅读 · 1 评论 -
sin、cos三角函数计算
cos、sin、asin、acos这些三角函数操作的是弧度,而非角度你需要把角度转化为弧度:弧度=角度*Pi/180;例1比如对边和邻边分别为a,b设角度为x,则x = atan(a / b);其中x为弧度制如需转换为角度值,则x * 180 / 3.1415例2://计算旋转角度{弧度=角度*Pi/180} {两点间距离公式 根号下(|x...原创 2019-05-18 08:34:10 · 20735 阅读 · 0 评论 -
int main( int argc, char* argv[] )
argc、argv的具体含义argc和argv参数在用命令行编译程序时有用。main( int argc, char* argv[], char **env ) 中第一个参数,int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在VS中默认值为1。 第二个参数,char*型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元...原创 2019-07-02 20:15:38 · 1077 阅读 · 0 评论 -
include用法
iostream与iostream.h#include <iostream.h> // 这个就是1998年标准化以后的标准头文件#include <iostream> // 这个就是标准化以前的头文件 更本质上的区别就是iostream把标准C++库的组件放在一个名位std的namespace里面。而相对的iostream.h则将这些标准组件放在全...原创 2019-05-29 19:12:33 · 2356 阅读 · 0 评论 -
C++字符串转化函数
std::to_string重载如下:string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_...原创 2019-11-21 11:03:03 · 1480 阅读 · 0 评论 -
静态变量及函数
Static关键字Static关键字有两个作用:修饰变量和修饰函数。Static修饰全局变量叫做静态全局变量,Static修饰局部变量叫做静态局部变量,Static修饰函数叫做静态函数;静态全局变量:限制变量的作用域,仅在本文件中访问,其他文件不可访问;静态局部变量:仅在本函数体内访问,本文件其他函数体内不可访问;但静态局部变量的值在程序运行期间不会销毁;静态函数:仅在本文件中调用...原创 2019-05-31 11:14:21 · 2715 阅读 · 0 评论 -
C/C++程序编译流程
编辑(把程序代码输入,交给计算机)。程序的基本流程如图:预处理 预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理①将所有的“#define”删除,并且展开所有的...原创 2019-05-16 08:41:43 · 510 阅读 · 0 评论 -
前++和后++
前++是运算时取的值是自增加一后的值!后++是运算时取原先的值,运算后本身的值自增加一!int a[5] = { 1, 2, 3, 4, 5 };int* p = a;int* pq = a; for (int i = 0; i < 5; ++i){ std::cout << " &a = 0x" << ++p << "; a ...原创 2019-05-20 19:17:30 · 3468 阅读 · 1 评论 -
函数中const int& a与int& a的区别
const 与&作用const常类型作用:形参在子函数中调用时当成一个常量来使用,既无法成为左值,无法修改形参的值。引用(&)作用:如a=&b,表示a是b的别名,此时a和b的地址相同。在子函数中调用时,形参的改变就是实参的改变,在C中需要用到指针来实现。函数fun(int a, int b)/fun(int& a, int& b)v...原创 2019-05-08 08:41:19 · 11396 阅读 · 2 评论 -
string、char *、char[]的转换
string转char*方式一:data()#include <iostream>using namespace std;void main(){ string str = "Hello World!!!"; const char* p = str.data(); //加const或者用char* p=(char*)str.data() cout &l...原创 2019-04-15 11:23:11 · 1078 阅读 · 0 评论 -
c语言宏定义#define
数值宏常量 #define 宏定义可以定义在代码的任何地方,从本行宏定义开始到后面代码都认识这个宏;可以把任何东西定义成宏。因为编译器在预编译的时候用真身替换替身,然而在代码里面却又常用替身来帮忙。宏定义是个演技高超的替身演员,但也会经常耍大牌的,我们慎用它。#define PI3.141592654 在代码中你尽可以使用PI来代替3.141592654,若你要把PI精...原创 2019-05-14 09:00:38 · 2970 阅读 · 0 评论 -
fstream、ifstream、ofstream
文件流ofstream //文件写操作,内存写入存储设备(文件) 输出流通常我们所说的对一个文件进行写操作,就是把内存里的内容,也就是缓冲区的内容写到硬盘,可以将标准输出设备理解为显示器ifstream //文件读操作,存储设备到内存. 输入流通常我们所说对一个文件读操作,就是把存在硬盘的内容写到内存中,也就是缓冲区fstream //读写...原创 2019-08-26 15:51:09 · 2350 阅读 · 0 评论 -
typedef 常见用法
结构体typedef struct tagMyStruct{ int iNum; long lLength;}MyStruct;上述语句实际上完成两个操作:1) 定义一个新的结构类型tagMyStruct2) typedef为这个新的结构起了一个名字,叫MyStruct。typedef struct tagMyStruct MyStruct;因此,M...原创 2019-05-07 11:38:43 · 424 阅读 · 1 评论 -
字符串中size()、length()与sizeof()用法及区别
1、string中的size()和length()计算字符串中真实有意义的字符的长度字符串的size()函数返回字符串的长度,不包括结束符'\0';string a = "abcd";或string s = "abd\0";cout << "a.size(): " << a.size() << endl;cout << "a.leng...原创 2019-04-08 22:11:10 · 13759 阅读 · 0 评论 -
C语言dll文件的说明以及生成、使用方法
动态链接库 动态链接库(DynamicLinkLibrary)是一种不可执行的二进制程序文件,它允许多个程序共享执行特殊任务所必需的代码和其他资源。Windows 中,DLL 多数情况下是带有 ".dll" 扩展名的文件,但也可能是 ".ocx"或其他扩展名;Linux系统中常常是 ".so" 的文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数...原创 2019-05-25 10:24:20 · 17619 阅读 · 3 评论 -
cmd命令台
返回根目录命令 格式:cd\返回上级目录命令 格式:cd ..进入指定文件夹命令 格式:cd 文件夹名称按键盘上键返回上个命令原创 2019-05-25 10:49:39 · 565 阅读 · 0 评论 -
判断文件夹或者文件是否存在
方法一:access函数判断文件夹或者文件是否存在函数原型: int _access(const char *filename, int mode);所属头文件:io.hfilename:可以填写文件夹路径或者文件路径mode:0 (F_OK) 只判断是否存在 2 (R_OK) 判断写入权限 4 (W_OK) 判断读取权限 6 (X_OK) 判断...原创 2019-07-08 11:02:01 · 1420 阅读 · 0 评论 -
c/c++ strrchr 查找字符串最后一次出现的位置
函数简介函数名称: strrchr函数原型:char *strrchr(const char *str, char c);所属库: string.h函数功能:查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回这个位置的地址。如果未能找到指定字符,那么函数将返回NULL。使用这个地址返回从最后一个字符c到str末尾的字...原创 2020-02-12 09:55:14 · 7060 阅读 · 0 评论 -
一维数组
数组的定义类型说明符 数组名[常量表达式];int a[10] //正确//错误int a[i] //数组的大小不可是变量 int a[19.2] //数组的大小不可是浮点常量int a[i + 1] //数组的大小不可是表达式 它表示定义了一个整型数组,数组名为 a,定义的数组称为数组 a。数组名 a 除了表示该数组之外,还表示该数组的首地址。 ...原创 2019-05-23 08:50:58 · 384 阅读 · 0 评论 -
计算机内存
存储单位换算B是Byte的缩写,B就是Byte,也就是字节(Byte);b是bit的缩写,b就是bit,也就是比特位(bit);B与b不同,注意区分,KB是千字节,Kb是千比特位。1MB(兆字节)= 1024KB(千字节)= 1024 * 1024B(字节) = 1048576B(字节);8bit(比特位)= 1Byte(字节);1024Byte(字节)= 1KB(千字节);...原创 2020-03-11 16:10:22 · 174 阅读 · 0 评论 -
exit、return、指针指向NULL
NULL指针指向的地址为0x00000000,其实内在中地址的范围是0x00000000~0xffffffff,地址中的每一个字节都可以存储东西。但是系统出于某些原因考虑,0x00000000这个地址不用。所以返回指针为NULL一般代表错误,很多函数返回其它值是正确的地址。NULL指针是不指向任何一个地址的指针。这样的指针一般是允许的。当一个指针为NULL的时候,不要对它进行存取。说...原创 2019-05-15 08:44:47 · 488 阅读 · 0 评论 -
C_C++编程命名规范
目前业界共有四种常见的命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法,其中前三种是较为流行的命名法。驼峰命令法正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字,其中第一个单词的首字母小写,其他单词的首字母大写,大写字母的位置如驼峰一样交替出现。下面是分别用骆驼式命名法和下划线法命名的同一个函数:printEmployeePaychecks();...原创 2020-02-11 13:51:03 · 276 阅读 · 0 评论 -
I/O 文件流读取
void CodeTfConfig(const string& vstrTFConfig, char& ch){ fstream q_Sfstream(vstrTFConfig); char q_chchar = 'A'; do { q_Sfstream.get(q_chchar); if ((q_Sfstream.eof())) { break; ...原创 2019-08-19 19:35:41 · 251 阅读 · 0 评论