自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 C++程序流程结构

文章目录程序流程结构选择结构循环结构程序流程结构C/C++支持最基本的三种结构:顺序结构,选择结构,循环结构循序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码选择结构一. if语句作用:执行满足条件的语句if语句的三种形式单行格式if语句多行格式if语句多条件的if语句单行格式if语句:if(条件){条件满足执行的语句}多行格式if语句:if(条件){ 条件满足执行的语句

2021-07-22 13:40:53 213

原创 C++函数提高

文章目录函数默认参数函数占位参数函数重载函数重载概述函数重载注意事项函数默认参数C++中,函数的形参列表中形参是可以有默认值的。语法:返回值类型 函数名 (参数 = 默认值){ }如果某个位置参数有默认值,那么从这个位置往,从左向右,必须都要有默认值如果函数声明有默认值,函数实现的时候就不能有默认参数,也就是声明和实现中只允许其一有默认参数;#include <iostream>#include <cstdio>using namespace std;i

2021-07-18 22:49:30 111

原创 C++函数入门

文章目录1.函数概述2.函数的定义3函数的调用4.函数的声明:5.函数的常见样式6.函数的分文件编写1.函数概述作用:将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。2.函数的定义函数定义的步骤:函数返回值函数名形式参数列表函数体语句return 表达式语法:返回值类型 函数名(形参列表){函数体语句return 表达式}说明:返回值类型:一个函数可以返回一个值;函数名:给函数起个名称;参数列表:使用该

2021-07-18 21:41:56 136

原创 C++运算符

文章目录运算符1.算术运算符2.赋值运算符3.比较运算符4.逻辑运算符运算符作用:用于执行代码的运算运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较,并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值1.算术运算符作用:用于处理四则运算算术运算符包括以下符号:运算符术语示例结果+正号+11-负号-1-1+加号10 + 515

2021-07-18 21:14:31 125

原创 C++基本数据类型

文章目录1. 整型2. 实型(浮点型)3.字符型4.字符串型5.布尔类型bool6.转义字符1. 整型作用:整型变量表示的是整数类型的数据C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:数据类型占用空间取值范围short(短整型)2字节(-2^15 ~ 2^15-1)int(整型)4字节(-2^31 ~ 2^31-1)long(长整型)windows为4字节,Linux为4字节(32位),8字节(64位)(-2^31 ~ 2

2021-07-18 21:11:50 1165

原创 C++ 初识

文章目录1.1注释1.2变量1.3常量1.4关键字1.5标识符命名规则1.1注释作用:在代码中加一些说明和解释,方便自己或其他程序员阅读代码两种格式单行注释:// 描述信息//通常放在一行代码的上方,或者一条语句的末尾多行注释:/* 描述信息* /通常放在一段代码的上方,对该段代码做总结1.2变量作用:给一段指定的内存空间起名,方便操作这块内存语法:变量的定义:数据类型 变量名 = 初始值示例:#include<iostream>using namespace

2021-07-10 20:45:19 65

原创 一维数组和二维数组的数组名

一维数组数组名是个指针常量,即指针的指向不可以修改,但指针所指向空间的值可以修改一维数组数组名除了两种特殊情况外,可以理解为指向第一个元素的指针两种特殊情况:sizeof数组名对数组名取地址int arr[5] = { 1, 2, 3, 4, 5 };//1、当sizeof数组名时候,统计是整个数组的大小printf("sizeof(arr) = %d\n", sizeof(arr));//2、当对数组名 取地址的时候printf("%d\n", &arr);print

2021-04-26 17:24:50 1224

原创 Linux信号(signal)

文章目录信号的机制与信号相关的事件和状态信号四要素Linux 常规信号一览表信号的机制A 给 B 发送信号,B 收到信号之前执行自己的代码,收到信号后,不管执行到程序的什么位置,都要暂停运行,去处理信号,处理完毕再继续执行。与硬件中断类似——异步模式。但信号是软件层面上实现的中断,早期常被称为“软中断”。信号的特质:由于信号是通过软件方法实现,其实现手段导致信号有很强的延时性。但对于用户来说,这个延迟时间非常短,不易察觉。每个进程收到的所有信号,都是由内核负责发送的,内核处理。与信号相关的事件

2021-04-26 17:00:36 11727

原创 Linux线程概念及基本控制原语

文章目录线程概念Linux 内核线程实现原理线程优、缺点线程控制函数pthread_self()pthread_create()pthread_exit()pthread_join()pthread_cancel()pthread_detach()线程概念LWP:light weight process 轻量级的进程,本质仍是进程(在 Linux 环境下)进程:独立地址空间,拥有 PCB线程:有独立的 PCB,但没有独立的地址空间(共享)区别:在于是否共享地址空间。 独居(进程);合租(线程)。

2021-04-09 22:11:28 119

原创 指针易错点

指针越界void test01(){ char buf[9] = "HelloWord";//数组大小应该设为10 printf("buf:%s\n",buf);//会出现乱码,字符串末位没有加\0}返回局部变量地址char *getString(){ char str[] = "HelloWorld"; //局部变量,栈区申请的空间 printf("getString_str = %s\n", str); return str;} //随着函数调用结束,栈区的空间会被释放.

2021-04-09 22:10:40 97

原创 C/C++中的内存四区

文章目录内存四区代码区全局/静态区栈区注意事项:堆区堆区基本使用:注意事项:内存四区代码区作用:存放CPU执行的二进制机器指令特点:只读共享全局/静态区特点:全局/静态区存储全局变量、静态变量、常量,该区变量在程序运行期间一直存在程序结束由系统回收。已初始化的数据放在data段,未初始化的数据放到bss段该区变量当未初始化时,会有有默认值初始化。总结:管理方式:编译器自动管理该区内存。生命周期:程序结束释放栈区特点:栈是一种先进后出的内存结构,由编译器自动分

2021-04-09 22:09:51 191

原创 C++引用类型

文章目录引用的基本使用引用的注意事项引用的本质引用做函数参数引用做函数返回值常量引用引用的基本使用作用: 给变量起别名语法: 数据类型 &别名 = 原名int main() { int a = 10; int& b = a;//数据类型 &别名 = 原名 给变量a起了一个别名b cout << "a = " << a << endl; cout << "b = " << b << endl;

2021-04-09 22:08:36 266

原创 结构体内存对齐及规则

内存对齐的意义为什么要内存对齐:内存的最小单元是一个字节;CPU实际上将内存当成多个块,每次从内存中读取一个块,这个块的大小可能是2、4、8、16等。如果没有对齐,为了访问一个变量可能产生二次访问;有了内存对齐,可以提高操作系统访问内存的效率。我们来分析下非内存对齐和内存对齐的优缺点在哪?总结:结构体的内存对齐就是拿空间换时间的做法平台原因(移植原因):某些硬件平台只能在某些地址处取某些特定类型的数据 否则抛出硬件异常性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐为了访问未

2021-04-06 00:59:31 533

原创 指针的步长及意义

不同类型的指针有何不同的意义指针变量+1后跳跃字节数量不同解引用的时候,取出字节数量不同指针变量+1后偏移的字节数不同代码演示:(不同编译器下偏移值可能不同)void test01(){ char * p1 = NULL; printf("%d\n", p1); printf("%d\n", p1 + 1);//+1偏移1个字节 int * p2 = NULL; printf("%d\n", p2); printf("%d\n", p2 + 1);//+1偏移4个字节 d

2021-04-05 23:37:32 515

原创 字符串常量和字符串变量

字符串常量有些编译器把多个相同的字符串常量看成一个(节省空间),有些则不进行此优化//1、字符串常量 vs下是可以共享的void test01(){ char * p1= "hello world"; char * p2 = "hello world"; char * p3 = "hello world"; printf("%d\n",&"hello world"); printf("%d\n", p1); printf("%d\n", p2); printf("%d\n"

2021-03-28 16:28:15 1352

原创 #define定义宏常量和宏函数

宏函数概念:宏函数和宏常量都是利用#define定义出来的内容在项目中,经常把一些短小而又频繁使用的函数写成宏函数这是由于宏函数没有普通函数参数压栈、跳转、出栈返回等时间上的开销,可以调高程序的效率。注意事项: 宏函数通常需要加括号,保证运算的完整#define MYADD(x,y) ((x) + (y)) //宏函数//普通函数下的a、b都要进行入栈,函数执行后出栈int myAdd(int a ,int b)//普通函数{ return a + b;}//宏函数 在一定的场景下

2021-03-28 15:01:50 1542

原创 函数传参之值传递和地址传递

值传递函数传参的过程实际上是形式参数被实际参数赋值的过程;值传递:形式参数修改不了实际参数;void swap1(int num1,int num2){ int temp; temp = num1; num1 = num2; num2 = temp; printf("num1 = %d\n",num1); printf("num2 = %d\n",num2);}int main(){ int a = 1; int b = 2; swap1(a,b); printf("a

2021-03-26 22:55:30 612

原创 二级指针

指针的基本概念什么是指针:通过地址能找到所需的变量单元,因此说,地址指向该变量单元,将地址形象化的称为指针;什么是指针变量:存放指针(地址)的变量;指针变量的定义:类型名 * 指针变量名一个变量的指针的含义包含两个方面,一是存储单元的纯地址,二是指向存储单元的数据类型,故定义指针变量时要指定基类型,用来指定此指针变量可以指向的变量的类型;注释:& 取地址运算符。&a是变量a的地址;* 取内容运算符;间接访问运算符二级指针二级指针的概念:用来存放一级指针地址的指针 ,也

2021-03-26 21:35:55 2098 1

原创 无类型(void)和万能指针(void *)

无类型voidvoid用途:限定函数返回值;例如:void text()表示函数无返回值;限定函数的形参;例如:int text (void)表示函数没有参数传递,返回一个int类型的数据;通常省去void,直接写成int text ()注意:void不能像char 、 int 、double等类型那样定义变量,因为void是无类型,系统无法给void分配空间,不知道分配多大字节的空间。所以没有void类型的变量;万能指针void *任何类型的指针都可以直接赋值给void *类型的指

2021-03-26 19:57:03 579

原创 空指针和野指针

空指针(NULL)含义:特殊的指针变量,表示不指向任何东西;NULL是一个值为0的宏常量作用:指针变量创建的时候,可以初始化为NULL注意:不要对空指针进行解引用操作void test{ //指针变量 指向内存编号为0的地址 int *p = NULL;//创建指针变量的时候可以给指针初始化为NULL //printf("*p = %d\n",*p);内存地址0~255地址被系统占用,不可访问 printf("p = %d\n",p);// 打印输出 0}野指针含义:野指针指向一

2021-03-26 18:30:25 431

原创 const修饰的变量和指针

常量指针和指针常量的比较常量指针:指针指向内存区域的值不能修改,指针指向可以修改;const修饰的是*;*p只读,不可修改;p可读可写,p可以修改;int a =10;int b = 20;const int *p = &a;//等价于int const *p;const距离*近,const 修饰是*printf("*p = %d\n",*p);//*p可读,也就是a的值//*p = 30;//error:指针所指向的内存空间内容不可修改p = &b;//指针的指向可以

2021-03-26 14:12:17 302

原创 指针的间接赋值

变量的修改方式有两种:直接修改、间接修改通过指针可以进行间接赋值,间接赋值成立的条件为:两个变量(普通变量+指针变量)或者 (实参+形参)建立关系通过*操作指针指向的内存void changeValue(int *p){*p = 1000;}void test01(){//1 、一个普通变量 和一个指针变量 构成指针的间接赋值int a = 10;int * p = &a; //建立指针变量p和整型变量a的联系*p = 100;//通过解引用操作间接修改a的值p

2021-03-25 19:49:38 256

原创 Linux的软链接和硬链接

1.Linux中链接概念Linux链接分两种,一种被称为软(符号)链接(Symbolic Link),另一种被称为硬链接(Hard Link)。默认情况下,ln命令产生硬链接。inode的概念:inode是文件系统中存储文件元信息的区域,中文叫节点索引,每个节点索引包含了文件的创建者,大小,日期等等。可以通过ls -i 命令查看inode的值软链接文件类似于Windows的快捷方式。它实际上是一个特殊的文件。在软连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。硬连接指通过索引

2021-03-22 17:14:48 217

原创 Linux进程间通信之管道

文章目录进程间通信(IPC)管道管道的基本概念进程间通信(IPC)Linux 环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程 1 把数据从用户空间拷到内核缓冲区,进程 2 再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC InterProcessCommunication)。在进程间完成数据传递需要借助操作系统提供特殊的方法,如:

2021-03-22 17:13:58 103

原创 链表的实现(c语言描述)

文章目录链表的概念(单链表)链表与数组链表的增删改查链表的动态创建链表的概念(单链表)1.链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表与数组链表与数组的区别数组静态分配内存,链表动态分配内存。数组在内存中是连续的,链表是不连续的。数组利用下标定位,链表通过遍历定位元素。数组插入和删除需要移动其他元素,链表的插入或删除不需要移动其他元素。数组的优缺点随机访问性比较强,可以通过下标进行快速定位。查找速度快插入和

2021-03-20 14:58:25 210

原创 Liunx文件IO

文章目录基本文件操作基本文件操作文件操作:在Linux中要操作一个文件,一般是先open打开一个文件,得到文件描述符,然后对文件进行读写操作(或其他操作),最后使用close()关闭文件即可(如果不关闭文件会造成文件的损坏);文件平时是存放在块设备的文件系统文件中的,我们把这种文件叫静态文件,当我们去打开一个文件时,Linux内核做的操作包括:内核在进程中建立一个打开文件的数据结构,记录下我们打开的这个文件;内核在内存中申请一段内存,并且将静态文件中的内容读取到内核中特定地址管理存放(叫动态文件

2021-03-20 14:55:00 87

原创 Linux进程控制

文章目录进程标识符获取进程的标识符进程的创建进程的退出进程标识符进程标识符:每个进程都有一个非负整数表示的唯一进程ID,因为进程ID标识符总是唯一的,常将其用作其他标识符的一部分以保证其唯一性。获取进程的标识符getpid():获取当前进程的ID;getppid:获取父进程的ID;进程的创建fork():创建一个新的进程;c程序一开始,就会产生 一个进程,当这个进程执行到fork()的时候,会创建一个子进程。此时父进程和子进程是共存的,它们俩会一起向下执行c程序的代码。子进程创建成功

2021-03-19 14:13:23 114

原创 c语言字符串处理函数

文章目录输出字符串函数输入字符串函数测字符串长度函数字符串复制函数字符串连接函数字符串比较函数转换为小写的函数转换为大写的函数输出字符串函数一般形式:puts(字符数组)作用:将一个字符串(以’\0’结束的字符序列)输出到终端;在用puts函数输出时将字符串结束标志’\0’转换成’\n’,即输出完字符串后换行;相当于printf("%s\n",字符数组);输入字符串函数一般形式:gets(字符数组)作用:从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值时字符串起始地址;注意:

2021-02-27 16:47:53 199

原创 Liunx基本操作快速入门

文章目录Linux命令结构Linux目录结构linux文件与目录管理目录与路径文件与目录管理文件内容查看重要的几个热键man(manual )手册的查看Linux命令结构命令 【选项】【参数】注释:选项是以"-"来指明的,命令、选项、参数之间以空格隔开;Linux目录结构linux文件与目录管理目录与路径相对路径与绝对路径绝对路径:由根目录(/)开始写起的文件名或目录名称,"一定由根目录/写起"例如/home/book;相对路径:相对于当前路径的文件名写法,"不是由/写起"例如

2021-02-27 14:31:24 80

原创 指针的基本概念及使用

指针的概念,指针变量的概念,为什么要使用指针

2021-02-26 19:28:34 2444

原创 vim编辑器快速入门

vi编辑器快速入门

2021-02-26 19:18:53 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除