C/C++/数据结构
C/C++/数据结构
Rocky_myx
这个作者很懒,什么都没留下…
展开
-
c++Analyse-类模板编译过程
1C++编译链接全过程C++的编译过程分为预编译、编译、汇编、链接1.1 预编译预编译过程会进行一些基本的操作操作1:将会把#define宏定义进行替换#define Max 100//如程序中出现了上面的语句,则预编译结束后,程序中的所有 Max 都已经被替换成了100操作2:执行条件编译:#ifdef,#ifndef,#else,#elif,#endif 等语句#ifndef XXX#define XXX#endif/*其实上面的语句相当与一个常用的if判断语句,只不过这个判断转载 2021-09-18 16:40:57 · 776 阅读 · 0 评论 -
c++Analyse-多态的底层实现原理
多态的底层实现原理1.使用虚函数之前2.使用虚函数之后Cat没有实现重写Cat没有实现重写的时候Cat中存储的是Animal中的sperak();Cat实现重写Cat实现重写的时候Cat中存储的是Cat中的sperak();Animal& animal=cat;animal.speak();animal指向的是cat的对象,将从cat的虚函数表中找到Cat::speak的地址所以打印的时候出来的是猫在说话#include <iostream>#in原创 2021-09-05 13:30:30 · 320 阅读 · 0 评论 -
c++Analyse-菱形继承问题分析
菱形继承问题分析菱形继承:B C继承A,D继承B C问题:1.当两个父类B,C拥有相同的成员变量,D在访问的时候就会产生二义性2.D中会有继承一份来自B的成员变量,也会继承一份来自C的成员变量,这两个变量相同,导致资源浪费底层实现如下图分析:解决办法:1.两个父类拥有相同的数据,需要加以作用域区分2.利用虚继承解决菱形继承的问题,在继承之前加virtual关键字变为虚继承A为虚基类虚继承底层实现如下图分析:vbptr为虚基类指针,会指向虚基类表vbtablev-virtualb-原创 2021-09-05 12:53:46 · 163 阅读 · 0 评论 -
c++Analyse-继承中的对象模型分析
继承中的对象模型分析知识点:1.父类中所有非静态成员属性都会被子类继承下去2.父类中私有成员属性是被编译器隐藏了,因此访问不到,但是确实被继承下去分析:从图中可以看到,Son类继承了Base类中private权限的m_c成员变量,只是子类访问不到#include <iostream>#include <string>using namespace std;class Base{public: int m_A;protected: int m_B;pr原创 2021-09-05 12:19:02 · 168 阅读 · 0 评论 -
数据结构-C冒泡排序、合并排序、快速排序
C 排序分析1 冒泡排序1.1 算法基本思想分析冒泡排序是典型的交换排序。交换排序就是通过元素的两两比较,判断是否符合要求,如果不符合就交换位置来达到排序的目的。冒泡排序的基本思想就是利用比较交换,利用循环将第i小或者大的元素归位,归位操作利用对n个元素相邻的两个进行比较,如果顺序正确就不交换,如果顺序错误就进行位置的交换。通过重复的循环访问数组,知道没有可以交换的元素,那么整个排序就已经完成。1.2 时间复杂度及稳定性算法最好时间最坏时间平均时间额外空间稳定性冒泡原创 2021-04-12 21:12:57 · 256 阅读 · 0 评论 -
数据结构-C栈的基本操作
C 栈C 栈的顺序存储结构#include <stdio.h>#include <stdlib.h>#define MAX_SIZE 6 /*存储空间初始分配量 */typedef struct SeqStack{ int top; int data[MAX_SIZE];}SeqStack;SeqStack* Init_Stack(){ SeqStack* stack = (struct SeqStack*)malloc(sizeof(SeqStack))原创 2021-03-25 16:33:48 · 177 阅读 · 0 评论 -
数据结构-C单链表基本操作
C 单链表实现1头结点#include <stdio.h>#include <stdlib.h>#include <math.h>struct ListNode{ int data; struct ListNode *next;};struct ListNode *addNodeRear(struct ListNode *head, int data){ struct ListNode *pr = head; struct ListNode原创 2021-03-25 09:24:24 · 187 阅读 · 0 评论 -
C++技术测试-字符串数组和字符串指针
C++字符串数组和字符串指针#include <stdio.h>int main(){ char str1[] = "Hello World"; char str2[] = "Hello World"; char* str3 = "Hello World"; char* str4 = "Hello World"; if (str1 == str2) printf("str1 and str2 are same\n"); else printf("str1 and原创 2021-03-23 17:38:06 · 119 阅读 · 0 评论 -
C++技术测试-数组和指针的区别
C++数组和指针的区别#include <cstring>#include <cstdio>int GetSize(int data[]){ return sizeof(data);}int main(){ int data1[] = { 1,2,3,4,5 }; int size1 = sizeof(data1); int *data2 = data1; int size2 = sizeof(data2); int size3 = GetSize(原创 2021-03-23 15:06:40 · 122 阅读 · 0 评论 -
C++技术测试-(默认构造函数 有参构造函数 析构函数 复制构造函数)
1默认构造函数和有参构造函数1.1构造函数分开声明定义#include<iostream>using namespace std;class Person {public: Person(); Person(int newAge); Person(const Person& p); ~Person(); int m_age;};Person::Person(){ m_age = 0; cout << "默认构造函数" <<原创 2021-03-23 13:43:49 · 160 阅读 · 0 评论 -
C技术测试-变量、数组值地址分析
数组指针#include <stdio.h>#include <stdlib.h>int main(){ int size = 6; int *array=(int *)malloc(size*sizeof(int)); for (int i = 0; i < 6; i++) { array[i] = (int)(rand() % 10 + 1); } for (int i = 0; i < 6; i++) { printf("arr原创 2021-01-13 17:22:55 · 76 阅读 · 0 评论 -
Windows环境下Socket(单播)
windows操作系统上TCP协议cs架构服务器 server 客户端 client1.请求协议版本 1.请求协议版本2.创建socket 2.创建socket3.创建协议地址族 ...原创 2019-10-23 10:59:08 · 308 阅读 · 0 评论