- 博客(23)
- 收藏
- 关注
原创 【内存管理】C与C++的内存管理异同点
存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。问:1.malloc/calloc/realloc的区别是什么?什么是内存泄漏以及内存泄漏的危害?
2023-09-07 16:30:13
787
7
原创 机器学习简介
所谓监督学习中的“监督”,是指“数据中附带的正确答案标签”。那么,“数据中附带的正确答案标签”指的是什么呢?如上图,对于表示内容的数据我们称为“正确答案标签”,像①~③这样,最终对数据所属类别进行预测的应用,我们称之为“分类问题”。而数据④是基于面积等量化数据,这种用于对类似房租这样连续变化的数值进行预测,我们将其称为“回归问题”。简单来说,监督学习的基本原理就是使用大量的数据,通过计算机对数据进行反复处理,最终能够产生接近正确答案标签的输出值。数据收集。
2023-09-06 09:58:14
794
6
原创 【类和对象】③友元类
虽然调用构造函数之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。:声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用 static修饰的成员函数,称之为静态成员函数。:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。
2023-09-04 09:16:32
177
原创 【类与对象】②认识类的六个默认函数
但是:main函数中不能直接调用Time类的析构函数,实际要释放的是Date类对象,所以编译器会调用Date 类的析构函数,而Date没有显式提供,则编译器会给Date类生成一个默认的析构函数,目的是在其内部调用Time类的析构函数,即当Date对象销毁时,要保证其内部每个自定义对象都可以正确销毁 ,main函数中并没有直接调用Time类析构函数,而是显式调用编译器为Date类生成的默认析构函数。空类中真的什么都没有吗?注意:创建哪个类的对象则调用该类的析构函数,销毁那个类的对象则调用该类的析构函数。
2023-09-01 09:23:41
201
原创 【类与对象】①认识类与对象
/ 类体:由成员函数和成员变量组成// 注意后面的分号说明:class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分 号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。如:声明和定义全部放在类体中public:public:char* _sex;int _age;
2023-08-29 15:33:41
133
原创 【C语言进阶】关于柔性数组的学习
1.柔性数组的概念:也许你从没有听说过柔性数组(flexible array)的概念,但是它确实存在的;在C99中,结构体的最后一个元素允许是未知大小的数组,这就叫【柔性数组】成员;例如:struct S{ int n; int arr[]; //柔性数组成员}2.柔性数组的特点结构体中的柔性数组成员前面必须至少有一位成员变量;sizeof()函数计算结构体大小时,是不包括柔性数组的成员所占内存大小的;包含柔性数组成员的结构最好用malloc()函数进行动态分配内存,并且分配
2022-07-21 22:33:06
306
原创 【C语言进阶】⑨动态内存分配知识总结 超详细
1.为什么存在动态内存分配?通常:int a = 20; //在栈空间是哪个开辟四个字节char arr[10] = {0}; //在栈空间上开辟10个字节的连续空间;但是,上述开辟的内存的方式有两个缺点:空间开辟的大小是固定的;数组在声明的时候,必须指定数组的长度,和它所需要的内存,以至于在编译时系统分配空间;然而,对于空间的需求,不仅仅是上述的情况;有时候我们需要的空间大小在程序运行的时候才能知道,那数组在定义是给定的固定大小的空间就不能满足需求了,这时候我们就哟尝试动态内存开辟!
2022-07-12 22:55:08
514
5
原创 【C进阶】⑧自定义类型:结构体、枚举、联合体 超详细的总结
一、结构体1. 什么是结构体?结构体是一些值的集合,这些值被称为成员变量;结构体中的每个成员变量可以是不同类型的变量;例如:数组是一组相同类型的元素的集合;故:结构体也是一些值的集合,结构体的每个成员可以是不同类型;2. 结构的声明struct tag{ member -list }variable -list;例如:生活中,对象是复杂的;对于一本书而言:一本书含有:书名+作者+出版社+定价+书号等等;一个学生:学号+姓名+电话+性别等等;这些,书和学生就是一种结构
2022-05-25 12:22:13
1097
45
原创 【C编程】冒泡排序算法与qsort()函数模拟实现
什么是冒泡排序?“冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序>的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。”请看图解:(注:图片来源于博客作者:烟雨倾城
2022-05-20 11:14:38
687
40
原创 【C语言进阶】⑦字符串函数详解
一、字符串函数1.求字符串长度 - strlen():函数介绍:字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ );传递的实参所指向的字符串必须要以 ‘\0’ 结束,否则得到的是一个错误值;函数strlen()的返回值为size_t,是无符号的整数;2.自己模拟实现strlen()函数的功能2.1计数器版本int my_strlen(const char*str){ int count = 0; asser
2022-05-16 07:51:51
1984
46
原创 【C编程】四则运算实现的三种方法详解
1. 方法一:Switch选择语句实现:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int Mod(int x, int y){ return x * y;}int Del(int x, int y){ return x / y;}int Add(int x, int y){ return x + y;}int Sub(int x, int y){ return x - y;}menu(){ pr
2022-05-14 09:39:59
16038
21
原创 【C语言进阶】经典笔试题详解之指针篇
一、二维数组代码块①:int a[3][4] = { 0 }; printf("① %d\n", sizeof(a)); printf("② %d\n", sizeof(a[0][0])); printf("③ %d\n", sizeof(a[0])); printf("④ %d\n", sizeof(a[0] + 1)); printf("⑤ %d\n", sizeof(*(a[0] + 1))); printf("⑥ %d\n", sizeof(a + 1)); printf("⑦ %
2022-05-12 14:42:35
638
40
原创 【C语言进阶】经典笔试题数组篇之一维数组详解
一、知识回顾sizeof(数组名) -数组名表示整个数组的大小,计算整个数组的大小;&数组名:表示整个数组;除此之外,所有的数组名都是数组首元素的地址;sizeof(),求字符串长度时,字符串后自带有\0,也会被记录在内;strlen(),求字符串长度,遇到\0后结束;二、题目2.0 一维数组代码块①:int main() { int a[] = { 1,2,3,4 }; printf("① %d\n", sizeof(a)); printf("② %d\
2022-04-26 17:21:21
3298
56
原创 【C语言进阶】⑥函数指针详解
一、函数指针1.概念函数指针:首先它是一个指针,一个指向函数的指针,在内存空间中存放的是函数的地址;请看示例:int main(){int a = 10;int*pa = &a;char ch = 'c';char* pc = &ch;int arr[10] = {0};int (*parr)[10] = &arr;//取出数组的地址return 0;}解析:parr是一个指向数组的指针,存放的是数组的地址;所以:数组指针 —存放数组地址的指针
2022-04-21 13:17:36
61639
78
原创 【C语言进阶】⑤关于数组传参和指针传参辨析
文章目录一、数组1.1.一维数组1.2.二维数组1.3.指针和数组二、一维数组传参三、二维数组传参四、总结一、数组1.1.一维数组int arr1[]={1,2,3,4,5,6,7,8};数组名 arr1 一般表示的是首元素的地址,以下两种情况除外:(1)&arr1表示整个数组元素的地址;(2)sizeof(arr),其中arr表示的是整个数组,sizeof(arr)计算的是整个数组的大小,单位是字节;arr和&arr的辨析,请下面图解:1.2.二维数组int
2022-04-19 16:51:47
2006
27
原创 【C编程】三招教你学会用C语言编写“猜数字小游戏”
前言:一个游戏要有界面、有实现的函数;明确这两点之后,我们先搭建框架,之后在去完善每一个框架的细节!第一步.编写游戏界面函数menu()和游戏的实现函数game();代码如下:void game(){ printf("玩游戏!");}void menu() //菜单函数{ printf("*****************************\n"); printf("**********猜数字游戏**********\n"); printf("*******1.paly
2022-04-18 06:43:50
3096
12
原创 【C语言进阶】④指针归纳总结,这些指针你都认识吗?
文章目录一、指针的概念二、野指针1. 概念:2. 为什么会出现野指针?3. 如何避免野指针的出现?三、指针类型总结3.1字符指针3.2指针数组3.3数组指针3.4指针函数3.5函数指针3.6.看一段代码,想一想打印的结果是什么?3.7.输出的是两个地址,这两个地址是 test 函数的地址 为什么呢?3.8指针函数和函数指针总结四、感谢与预告一、指针的概念指针就是一个变量,只不过这个变量比较特别,是用来存放地址的,而地址是计算机内部唯一标识的一块内存空间,即:地址是存储空间的编号!;其实忽略这个变量
2022-04-16 22:07:23
833
33
原创 【C语言进阶】③探究浮点数在内存中的存储方式
文章目录一、例子二、浮点数在内存中存储方式2.1国际标准IEEE(电气和电子工程协会)754规定:三、解答3.1刚开始的例子答案一、例子想想看,输出的结果是什么?int main(){ int n = 9; float *pFloat = (float *)&n; printf("n的值为:%d\n",n); printf("*pFloat的值为:%f\n",*pFloat); *pFloat = 9.0; printf("num的值为:%d\n",n); printf("
2022-04-11 23:25:59
1117
10
原创 【C语言进阶】②数据在内存中存储之经典例题详解
第一题:百度2015年系统工程师笔试题:请简述大端字节序和小段字节序的概念,并设计一个小程序来判断当前机器的字节序。(10分)解析:上一篇文章已经讲述了大端字节序和小端字节序的概念,这里就不在累述。我们来分析一下编程实现:(1) 首先,对于机器的存储方式一般就两种:大端和小端;大端字节序是数据的高位存储在内存的低位,小端字节序是数据的低位存储在内存的低位。那么,对于一个变量来说,我们是不是只要判断出内存中的低位是数据的高位还是低位,那么我们就可以知道机器的存储方式。(2)实现:
2022-04-10 22:45:29
1600
6
原创 【C语言进阶】①探究数据在内存中的储存
一、知识回顾1.数据类型char -字符型 //在内存中占一个字节short -短整型 //在内存中占两个字节int -整型 //在内存中占四个字节long -长整型 //在内存中占四个字节float -单精度浮点型 //在内存中占 四个字节double -双精度浮点型
2022-04-06 22:14:34
924
3
原创 【Visual Studio】编程起点之实用调试小技巧
1.什么是bug?答:第一次被发现的导致计算机错误的飞蛾,也是第一个计算机程序错误。2.调试是什么?重要吗?所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心无愧,就必然需要掩盖,那就一定会有踪迹留下,留下的痕迹越多就越容易顺藤摸瓜,找到真相,这就是推理的过程。一名优秀的程序员是一名出色的“侦探”。每一次调试都是尝试破案的过程。我们是如何写代码的?又是如何排查出现的问题呢? -----拒绝迷信式调试!!!2.1 调试是什么?调试(英语:Deb
2022-04-02 00:39:02
569
8
原创 C语言实现素数查找
文章目录前言一、编程练习二、实现思路三、运行结果前言 作为一个现在已经大三的学生,大一大二时得过且过,不喜欢去敲代码,对待问题不去深入探究。现在正在准备考研,复习以前学过的知识,有种“扒开云雾见天日”之感,领略编程的乐趣,当然,学习过程中难免会遇到问题,欢迎友友们一起来探讨!提示:以下是本篇文章正文内容,下面案例可供参考一、编程练习 **1.打印a到b之间所有的素数**二、实现思路 1.素数判断定义:只能被1和它本身整除的数;故,我们判断第i个是不是素数,最简单的方法就是
2022-04-01 19:23:48
2059
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人