C
The Eighth
这个作者很懒,什么都没留下…
展开
-
太极1:迭代器&list
迭代器:迭代器实际上就是一个指针(string/vector)+对指针进行封装迭代器失效—>指针失效---->指针指向的空间不能访问---->指针指向的空间被释放了对vector来说在上面情况下迭代器会失效:1.所有可能会导致扩容的操作:如:reserve/resize()/insert()/push_back()/assign2.iterator erase(iterator pos);3.clear()/swap 如何解决:在任何有可能会引起迭代器失效的操作之后原创 2020-12-06 10:27:35 · 114 阅读 · 0 评论 -
太极1:STL:vector和string
STL:什么是STL?STL是C++中标准模板库------------standard template library实际上STL就是对常见数据结构(线性表(顺序表、链表)+栈和堆列+二叉树+哈希)以模板的方式进行了封装目的:替用户组织数据里面和增加了一些非常灵活和通用的算法----->主要是对数据进行操作的sort/reverse------------------------------分界线-------------------------------------STL对常见的原创 2020-12-02 02:52:57 · 221 阅读 · 0 评论 -
太极1:C++动态内存管理/模板
C/C++程序运行起来之后,内存划分的区域。每个区域的作用内核空间:放置操作系统相关的代码和数据用户不能直接进行操作—可以通过调用系统提供的api函数栈:与函数调用相关---------局部变量、参数、寄存器信息、返回值内存映射段(文件映射、动态库、匿名映射):静态库、动态库等堆:malloc/calloc/realloc new/new[]----->默认数据段(全局数据、静态数据):全局变量、被static修饰的变量代码段(可执行代码/只读常量):程序中的代码 常量malloc/c原创 2020-11-30 18:06:31 · 158 阅读 · 0 评论 -
太极1:深浅拷贝 const和static
浅拷贝:表层对其进行引用,实际指向同一块内存深拷贝:当发生拷贝构造或者赋值的时候,让每个对象都拥有自己独立的资源写时拷贝:浅拷贝+引用计数(记录资源被多少个对象在共享)+当多个资源共享资源时,只要有一个对象修改资源中的内容,将该对象独立出来(给该对象重新分配空间)----------------------------分界线---------------------------------------运算符重载:为了增加代码的可读性而给出的除了 .* :: sizeof ?: .原创 2020-11-30 17:35:41 · 112 阅读 · 0 评论 -
太极1:析构函数拷贝构造函数
析构函数:概念:与构造函数相反,在对象销毁时,由编译器自动调用,完成对象中资源的清理工作。不负责回收对象的空间!!!!只负责将对象空间中的资源清理干净!!!局部对象,空间在栈上—>当函数运行结束后,栈帧被系统回收,对象的空间则也被回收了特性:1.名字是构造函数前面加~2,没有返回值类型3.没有参数–即:析构函数不可重载,一个类最多只有一个析构函数4.在对象销毁时,由编译器自动调用,完成对象中资源的清理工作5.语法:用户没有显式实现,到编译器会生成一份默认的析构函数6.类中没有涉及原创 2020-11-30 13:27:59 · 77 阅读 · 0 评论 -
太极1:构造函数
面向对象和面向过程的区别:(C++和C语言的区别)面向过程:是以函数驱动的,通过函数间的相互调用次序来完成事情,重视完成该事情的步骤。面向对象:不关注事情的步骤,关心如何通过对象之间的交互将事情完成C++和C语言区别:1.面向对象和面向过程2.C++编译器对语法的检测更加的严格3.C++语言更加的人性化4.支持面向对象:封装、继承、多态5.STL6.C++更合适做比较复杂、大的工程------------------------------分界线---------------------原创 2020-11-30 13:09:45 · 223 阅读 · 0 评论 -
太极1:宏&const
宏的优缺点:1.宏常量:优点:一改全改常量名字具有一定的含义------MAX_SIZE 100缺点:宏常量没有类型的----不会参与到类型检测中----代码的安全性降低,而且一旦编译报错,报错的位置不准确2.宏函数优点:宏函数并不是一个真正的函数,在预处理阶段,预处理器已经将宏函数采用宏体进行替换了,少了函数调用参数压栈,开辟栈帧,返回等等的开销,代码的运行效率提高了。缺点:1.在实现时,可能会比较麻烦,要导出加括号2.宏函数也没有参数类型—不会有参数类型检测----安全性不高3.宏函原创 2020-11-29 11:13:26 · 83 阅读 · 0 评论 -
太极1:函数重载、引用
函数传参:传值、传地址、传引用缺省参数:概念:在声明/定义一个函数的时候,给函数的参数设置一个默认值,当用户对函数进行调用的时候,如果传递了实参,则使用实参,如果没有传递参数,则使用设置的默认值。“类似备胎”全缺省参数:所有函数都带默认值半缺省参数:一部分参数带默认值(必须从右向左给!!!)特性:1.缺省参数必须从右向左给出2.不能再函数声明和定义的位置同时给出3.C语言不支持---------------------------------分界线--------------------原创 2020-11-29 10:52:17 · 200 阅读 · 0 评论 -
太极1:移位位图
运算符优先级:単目运算符>双目运算符>移位>大与小移位操作:逻辑移位和算术移位逻辑移位:针对无符号类型的数据左移:丢弃最高位,低位补0右移:丢弃最低位,高位补0算术移位:针对的是有符号类型的数据左移:丢弃最高位,低位补0右移:丢弃最低位,如果该数字是正数高位补0,如果是负数高位补1给一个非空的整数数组,某个元素只出现了一次,其余元素均出现了两次,找出这个元素答:将所有数据全部异或,得到的值即为该元素----------------------------------原创 2020-11-24 15:52:04 · 115 阅读 · 0 评论 -
太极1:结构体对齐
结构体:一种新的自定义类型如果不考虑内存对齐,则是把所占的大小加起来,好处比较节省空间,坏处查找、使用的时候很不便如何进行对齐:1.使结构体中每个成员都在对齐的地址上对于剩余变量对齐:min(该变量类型,默认对齐数)如何检测该变量相对于结构体起始位置的偏移量是不是min的整数倍如果是,则已经对齐了,不用管如果不是,则需要在它的后面补一些字节,使它是min的整数倍2.结构体整体对齐调整为最小整数倍----------------------分界线----------------------原创 2020-11-22 11:10:10 · 77 阅读 · 0 评论 -
太极1:数组和指针
指针:一种数据类型,储存一个地址,地址就是指针,指针就是地址32位:4字节 64位:8字节int array[]={1,2,3,4,5,6,7,8,9,0};int* pa=array;即 printf("%d\n", *array);printf("%d\n", *pa);打印出来都是1pa++; 让指针向后偏移即此时指针指向数组为2的位置,此时printf("%d\n",*pa);打印出来结果为2pa+3 同上int* pa1=array;int* pa2=array+原创 2020-11-21 18:49:49 · 116 阅读 · 0 评论 -
Cpp this指针 构造函数
#include#include<stdio.h>using namespace std;class Date{public://void Display(Date* const this) 始终指向当前调用此函数的对象,指向不会发生改变//this指针类型:类类型 *const//this指针只存在于成员函数中//this始终作为成员函数的第一个形参//编译器自动传递,不需要显式定义这个参数//this 不是类的成员,只是一个函数形参,一般存在栈上,一般会做优化,存在寄存原创 2020-05-21 19:17:53 · 215 阅读 · 0 评论 -
双向链表
void listInit(List * lst){//´´½¨Ò»¸öÍ·½áµã£¬¹¹³ÉÑ»·½á¹¹lst->_header = creatNode(0);lst->_header->_next = lst->_header;lst->_header->_prev = lst->_header;}Node* creatNode(Type data){Node* node = (Node*)malloc(sizeof(Node));no原创 2020-05-09 19:45:03 · 80 阅读 · 0 评论 -
内存对齐
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>//´ËʱÕâ¸ö×Ô¶¨ÒåÀàÐ;Íλstruct Student//struct Student {// char name[1024];// int age;//};struct S1 {char c1;int...原创 2020-03-17 09:56:42 · 375 阅读 · 0 评论 -
几种常用的字符处理函数
1.不能用赋值语句将一个字符串常量直接赋给一个字符数组,应该为使用strcpy( )函数例如:str=“abcd”;是错误的应改为:strcpy(str,“abcd”)2.两个数组不能直接比较大小,应使用strcmp( )函数例如:if(str1>str2) printf(“1”)应改为:if(strcmp(str1,str2)=1 printf(“1”);3.strcat() ...原创 2020-03-16 15:41:50 · 598 阅读 · 0 评论 -
指针相关习题
一级指针的简单笔试题:void print(int *p, int sz){int i = 0;for (i = 0; i < sz; i++){printf("%d\n", *(p + i));}}int main(){int arr[10] = { 1,2,3,4,5,6,7,8,9 };int *p = arr;int sz = sizeof(arr) / s...原创 2020-03-16 10:27:58 · 134 阅读 · 0 评论 -
通过函数来实现两个数的交换
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void change(int i, int j){int k = i;i = j;j = k;printf(“交换后为:\n”);printf("%d\n", i);printf("%d\n", j);}int mai...原创 2019-11-27 16:15:46 · 273 阅读 · 0 评论 -
打印任意乘法表
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//打印随意的乘法口诀表void Chengfabiao1(int a){int x;int y;int z;for (x = 1; x <= a; x++){for (y = x; y <= a; y++)...原创 2019-11-27 16:08:18 · 262 阅读 · 0 评论 -
计算器
仅适合整数的加减乘除#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int add(int a, int b){return a + b;}int sub(int a, int b){return a - b;}int mul(int a, int b){retu...原创 2019-11-27 10:11:40 · 74 阅读 · 0 评论 -
五子棋
棋盘大小为5乘5通过坐标进行下棋,玩家先手,电脑随机#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>#define MAX_ROW 5#define MAX_COL 5char chess_board[MAX_ROW][MAX_C...原创 2019-11-21 09:54:39 · 306 阅读 · 0 评论 -
三子棋游戏
三子棋游戏通过坐标进行下棋电脑随机落子玩家先进行落子#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>#define MAX_ROW 3#define MAX_COL 3char chess_board[MAX_ROW][MAX...原创 2019-11-20 16:13:22 · 117 阅读 · 0 评论 -
使用函数判断一个数字是不是闰年
使用函数判断一个数字是不是闰年#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>void Run(int &i){if (i % 400 == 0 || i % 4 == 0 && i % 100 != 0)p...原创 2019-11-17 17:05:43 · 358 阅读 · 0 评论 -
猜数字游戏
系统随机给一个随机数,对其进行猜测#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>int Menu(){printf(“1.开始游戏\n”);printf(“0.结束游戏\n”);printf(“请输入您的选择:”);int c...原创 2019-11-17 15:38:53 · 66 阅读 · 0 评论 -
水仙花数
水仙花数#include<stdio.h>#include<stdlib.h>int main(){int baiwei;int shiwei;int gewei;int shuzi;int shuixianhua;int jishu=0;for (shuzi = 100; shuzi <= 999; shuzi++){baiwei = sh...原创 2019-11-17 15:07:53 · 78 阅读 · 0 评论 -
画出图形
画出*代码如下:#include<stdio.h>#include<stdlib.h>int main(){int i;int j;for (i = 1; i <= 13; i = i + 2){for (j = 1; j <= i; j++){printf("* “);}printf(”\n");};fo...原创 2019-11-17 14:47:46 · 141 阅读 · 0 评论 -
C对两个数进行交换
1.可创建临时变量对两个已知数进行交换#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int main(){int i=5;int j=3;int tmp = i;i = j;j = tmp;printf(“i=%d\n”, i);printf(“j=%d\n”, j...原创 2019-11-16 16:28:31 · 122 阅读 · 0 评论