自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c语言笔记 静态数据与ELF程序格式

程序员的代码,所有的静态数据以及代码编译完之后会在硬盘内放着,那些局部变量,形参,malloc()出来的堆内存,栈内存在我们的硬盘ELF可执行文件里面是没有,栈内存和堆内存都是存放在虚拟内存空间。栈内存是运行时动态分配的,用于存储函数调用时的局部变量和参数。这些内存区域是在程序运行时由操作系统分配的,而不是在编译时确定的。数据段和代码段从ELF文件中加载到虚拟内存空间中,而栈内存和堆内存则在运行时动态分配。运行时分配,包含从ELF文件加载的代码段和数据段,以及运行时动态分配的栈内存和堆内存。

2025-03-10 21:05:43 1386

原创 c语言题目 求大于平均值的数的个数

【代码】c语言题目 求大于平均值的数的个数。

2025-03-25 23:26:09 123

原创 c语言题目 求两数之和/两数之差的绝对值

【代码】c语言题目 求两数之和/两数之差的绝对值。

2025-03-25 23:17:43 79

原创 c语言题目 求输入成绩并转换成等级

//编写程序实现通过键盘输入一个百分制成绩,输出成绩等级A,B,C,D,E。其中,90分以上是A,80-90之间是B,70-79之间是C,60-69之间是D,60分以下是E

2025-03-25 23:09:27 232

原创 分享Windows系统暂停更新的方法(实用)

引言:使用笔记本的朋友都会遇到经常要更新系统的问题,有时候一周更新一次,我们家用版的笔记本或者电脑,正常来说使不用怎么更新系统的,而且有时候更新完系统后会出现大大小小的问题,比如wife模块的丢失,扬声器没有声音等问题,那么当我们有一个稳定的系统后,如果让系统不再继续更新下去呢?        

2025-03-24 14:48:21 284

原创 c语言数据结构 双循环链表设计(完整代码)

双循环链表设计完整代码

2025-03-20 20:50:54 362

原创 c语言数据结构 单循环链表设计(完整代码)

【代码】c语言数据结构 单循环链表代码。

2025-03-20 18:06:11 160

原创 c语言笔记 结构体数组,结构体指针,结构体数组指针,结构体指针数组

结构体数组,跟普通数组是一样的,只是结构体数组的元素是结构体,我们可以通过结构体数组来定义多个重复的结构体,避免代码的重复性。如果要用一个指针指向结构体数组,那么这个指针要跟这个结构体数组的类型匹配,所以我们定义一个结构体数组指针。结构体指针的语法跟结构体变量的成员初始化赋值方法几乎一样,唯一不同的是指针可以使用箭头,好看且方便

2025-03-19 15:30:00 443

原创 c语言笔记 结构体指针运用

c语言其实有时候基本知识还是一样只是说换了一个名称但是所表示的含义是一样的。        结构体指针是指针的一种类型,可以指向结构体变量或者结构体数组,下面我们来探究一下结构体指针跟结构体变量的结合,以及结构体指针与结构体数组的结合。1.结构体指针与结构体变量        下面Jack是结构体变量,p是结构体指针,以下的写法是等价的:所表示的是同一种事情,但是不同的表示方式。

2025-03-19 15:30:00 1655

原创 c语言笔记 结构体数组指针的运用

学习结构体的一维数组,可以定义一个班级;学习结构体的二维数组,可以定义一个学校,很多个班;学习结构体的三维数组,可以定义一个区域的学校,很多个学校,很多个班; 下面我们来探究一下这些结构体内部成员赋值的语法。        结构体数值指针是一种指针类型,通常指向与结构体数组以及结构体二维数组。这些看起来很高级,其实跟普通的指针数组与一维,二维数组的关系是一样的,在之前的文章里有探讨过,结构体类型的语法是表达上有所不同,但是本质是一样的。

2025-03-19 11:22:48 985

原创 c语言笔记 结构体内嵌套结构体的表示方式

如果在结构体中定义了一个内部的结构体,并且给这个内部结构体起了一个变量名,那么你可以通过这个变量名来访问内部结构体的成员。背景:如果我们在结构体中放结构体,我们可以不写结构体里面结构体的结构体标签,但是我们可以定义结构体里面结构体的变量,定义里面结构体定义变量与不定义变量的表示方式。这种写法在嵌套结构体时可以简化代码,避免不必要的标签定义,使代码更加简洁。如果是定义了里面结构体的变量 那么表达里面的成员语法,例如。

2025-03-18 19:41:29 257

原创 c语言笔记 结构体基础

基础知识        在c语言中变量是有类型的,比如整型,char型,浮点型等,这些都是单一的类型,那么如果说我要定义一个学生的信息,那么这些单一的类型是不足以表达一个学生的全部信息,所以我们就要用到结构体的知识,结构体是包含了很多种类型的一种结构,就像是一个大杂烩里面什么东西都有,比如指针,整型,数组,char型甚至是放结构体,唯一不能放的是函数,结构体里面的类型不能再创建的时候赋值,结构体只是创建类型。

2025-03-18 19:36:42 381

原创 c语言笔记 存储期

​在c语言中变量是有生存周期的,一个变量向系统申请内存就是变量的诞生,到内存被释放。这个从诞生到释放的过程就是生命周期。根据定义的不同我们分为三种生命周期的情况:自动存储期 静态存储期 自动存储期临时变量:同上局部变量:在作用域角度上   自动存储期是指在栈内存中的变量,这些变量不需要我们开发者去担心内存的问题,因为在栈内存中是会被系统释放的,也就是说在{}内生效,出{}外内存就会被系统自动回收,在变量定义处分配空间,出了作用域就被系统释放。

2025-03-16 12:47:16 865

原创 c语言题目 用函数的方法拼接字符串

使用函数的方法,我们需要传地址进去,传地址给函数让函数去到地址修改主函数中的值,修改完后返回一个指针,我们用一个新的指针来存放这个地址,再打印出来,或者说不用定义函数的类型为指针,因为它已经去到实际的位置上去修改主函数中的值了,我们直接在主函数中去打印数值就好。

2025-03-16 12:03:48 187

原创 c语言笔记 作用域

作用域的基本概念        在c语言中,我们的标志符是具有一定的可见范围的,我们称这个可见范围为作用域        在软件开发中,我们要确定好标识符的作用域范围,如果标识符超过了它实际所需要的范围,那么可能会对程序造成环境污染,导致一些不必要的名字冲突和误会。

2025-03-15 11:06:02 349

原创 c语言笔记 字串串函数---strcat,strncat,strcpy,strncpy

函数strcat功能:将两个字符串拼接起来,strcat(char *dest,const char *str)头文件:#include返回值:返回一个拼接好字符串的指针 -----等价于dest 数组名代表首元素地址 也可以另外顶一个指针去接收函数strncat功能:将两个字符串凭借起来strncat(char *dest,const char *str,n)strncat(char dest[],const *str .n)头文件#include返回值:返回拼接好字符串的指针

2025-03-15 09:53:19 394

原创 c语言笔记 字符串函数---strcmp,strncmp,strchr,strrchr

背景:如果说我们要比较两个字符串是否相等,使用strcmp或者strncmp函数。在c语言中不能直接进程两个字符串比较,必须借助strcmp或者strncmp函数。

2025-03-15 09:52:06 249

原创 c语言题目 拷贝函数参数

分析:我们可以定义一个char型的二维数组,让其内的元素存该参数,并将其打印出来思路:定义一个指针指向该参数串,并用strlen函数获得字符串的长度,也可以定义一个一维数组并初始化,这里体现了指针跟数组的互相转换,我们通过偏移指针来给二维数组赋值,下面是我的算法和代码。

2025-03-14 16:30:51 399

原创 c语言题目 拼接两个字符串并用空格隔开

【代码】c语言题目 拼接两个字符串并用空格隔开。

2025-03-14 12:35:23 160

原创 c语言题目 拼接字符串

【代码】c语言题目 拼接字符串。

2025-03-14 12:11:13 172

原创 c语言笔记 字符串函数---strstr strlen strtok以及sizeof

函数sizeof功能:sizeof函数是用来计算变量,类型,指针,数组,字符串的大小当作用于指针时,返回指针的大小。当作用于数组时,返回整个数组的大小。当数组作为函数参数传递时,它会退化为指向其首元素的指针。此时,sizeof操作数将返回指针的大小,而不是数组的大小。在动态分配的数组(通过malloc或new)中,sizeof无法获取数组的大小,因为动态分配的数组在运行时才确定大小,编译器无法在编译时计算其大小。函数strtok功能:分割字符串中的字串

2025-03-14 07:16:15 1380

原创 c语言笔记 静态函数和递归函数

背景知识:函数是可以跨文件使用的,也就是说函数a在文件1.c下被定义,也可以在2.c文件下使用。所谓的静态函数就是使其函数只能在本文件内使用,在其前面加上static修饰。用staic修饰的函数可以缩小可见范围。

2025-03-13 17:15:00 275

原创 c语言笔记 函数入门

c语言的函数就是用来实现某种功能的,如果说我们的程序代码都写在main函数中,这样会显得很难读懂,而且代码太长过于冗余,显得没有质量。所以我们可以把一些功能用分函数的方法实现功能独立分开,实现c程序的工整还有方便我们或者读者读懂。 如果我们都把程序的代码全部写在主函数内,要是出现错误,我们要修改起来比较麻烦,要是分函数写代码,我们可以精准的知道是哪个功能出现错误一个经典的c程序就是由一个个功能模块拼起来的整体,所以c语言也叫做模块化语言

2025-03-12 21:55:26 391

原创 c语言笔记 堆内存管理

运行时堆堆内存又称为动态内存,自由内存,简称堆,堆是唯一 一块内存可以让开发者自己定义的区段,开发者可以自己定义需要申请的内存大小,决定使用的的时间长短等。

2025-03-12 19:28:56 347

原创 c语言笔记 内存管理之栈内存

在c语言的程序需要内存资源,用来存放变量,常量,函数代码等,不同的内容存放在不同的内存区域,不同的内存区域有着不同的特征。c语言的每一个进程都有着一片结构相同的虚拟内存,虚拟内存是物理内存映射出来的,c程序存储在虚拟内存中在由虚拟内存映射到物理内存,这才真正的使用到物理内存。c程序用到虚拟内存,这方便了内核系统管理。

2025-03-10 21:04:29 283

原创 c语言笔记 函数参数的等价(下)

为什么这三种写法是等价的?        在C语言中,当一个数组作为函数参数传递时,它会退化为指向其首元素的指针。因此,无论是char *(argv[argc])还是char *(argv[]),在函数参数中都会被处理为一个指向char *的指针,即char **argv。这三种写法在内存布局和使用上是相同的,只是语法上的不同表达方式。        数组作为函数参数的时候系统会自动把它转化会一个指针,所以就会出现上面三种的等价,*解引用和[] 是等价的可以互相转换。char *(argv[argc]

2025-03-10 17:01:48 324 1

原创 c语言笔记 数组指针

数组指针是指针类型的一种,一般数组指针跟二维数组,一维数组结合比较多,下面我们通过图片来探讨一下数组指针的使用以及结合起来的联系。

2025-03-09 17:12:54 306

原创 c语言笔记 函数参数的等价(上)

这三种写法在 C 语言中是等价的,因为它们都用于声明一个指向二维数组的指针,或者用于声明一个二维数组作为函数参数。它们的等价性源于 C 语言中数组和指针之间的密切关系。让我们逐一分析这三种写法:        在C语言中,当数组作为函数参数时,第一维的大小会被忽略,因为数组会被转换为指针。也就是说,无论你写的是'a[m]'还是'a[]',编译器都会将其视为指针。因此,这里的m可能实际上并不影响参数的传递方式,可能只是一个提示,但编译器会忽略它。所以这个写法实际上会被视为指向一维数组的指针。也就是数组指针

2025-03-09 14:22:06 308

原创 c语言笔记 数组进阶题目的理解

题目:声明一个二维 int 型数组 a,再声明另一个一维数组指针数组 b,使该数组 b 的每一个指针分别指向二维数组 a 中的每一个元素(即每一个一维数组),然后利用数组 b 计算数组 a 的和。图解:画图帮助理解

2025-03-08 19:20:20 331

原创 c语言笔记 一维数组与二维数组

一维数组和二维数组名加1代表什么意思,偏移多少单位?方法:+1就是以数组的元素类型的字节为单位去偏移。先看结论再代码验证:一维数组名+1表示加一个整型单位的偏移量,也可以这么理解+1就是以数组的元素类型的字节为单位去偏移。二维数组名+1 表示加int []单位的字节去偏移,同时也是表示下一个元素单位。+1就是偏移到下一个元素。因为是二维数组所以偏移到第二个元素后是代表第二个元素的地址,那么此时再去*解引用,会得到第二个元素里面第一个元素的地址,例如 int a[2][3]; a+1的地址等于*

2025-03-08 18:46:06 337

原创 c语言笔记 标准输入缓冲区

​1. 缓冲区的类型行缓冲(Line Buffered):标准输入(stdin)通常是行缓冲的。这意味着输入的内容会先存储在缓冲区中,直到按下回车键(即输入换行符 \n)时,缓冲区的内容才会被提交给程序处理。全缓冲(Fully Buffered):如文件操作,缓冲区满时才提交。无缓冲(Unbuffered):某些实时输入(如stderr)直接处理。2. 回车键的作用当用户按下回车键时,行缓冲的输入会被提交给程序。例如:int num;scanf("%d", &num); // 输入"42\

2025-03-08 16:35:52 376

原创 c语言笔记 fgets

fgets 是 C语言中的一个标准输入输出函数,用于从输入流(如文件、键盘等)读取一行字符串。它的名字来源于 "File GeT Sring",表示从文件中读取字符串。fgets 的函数原型如下:stdin、标准输出stdout、标准错误stderr,或者是通过fopen 打开的文件指针。

2025-03-07 17:25:12 349

原创 c语言笔记 getchar

getchar() 是一个标准输入函数,它从输入缓冲区中读取一个字符。getchar() 会等待用户输入。'\n')都会被提交。输入:AB输出:请输入两个字符: 你输入的两个字符是:A 和 B。

2025-03-07 17:19:16 315

原创 c语言笔记 函数指针

函数指针定义:指向函数的指针,被称为函数指针;概念:函数指针是指针的一种类型,跟其他普通函数指针的用法是原因的,但是由特殊的地方就是函数指针的取址符和解引用的星号可以省略使用代码加深理解:在定义指针的时候,我们要匹配指针的类型,在之前的笔记中有提到变量的类型 就是把变量名字去掉,剩下的就是该变量的类型,函数也是如此;

2025-03-06 16:47:42 278

原创 c语言笔记 指针进阶

const型指针1.常指针2.常目标指针指针由两个功能,功能1指针指向地址, 功能2指针修改指向地址上的数值常指针:不能修改指针指向,但是能修改指针指向地址的数值 常指针若是要修改指针指向地址的数值的前提是必须在初始化指针的时候 指向一个地址,否则在定义完之后就不能被修改了; 常目标指针:不能修改指针所指向地址的数值,但是常目标指针可以指向 任意的地址。

2025-03-06 16:28:31 325

原创 C语言题目盲盒--附上本人的代码

C语言盲盒!!!

2025-03-05 17:32:33 214

原创 c语言笔记 野指针以及常量是否有地址

​野指针的两种情况1.指针初始化的时候什么也不写;2.指针指向的堆空间被释放;char *p = malloc(20);free(p); p=null;        这句话的意思是指针p指向malloc向系统申请的一块堆空间,然后这块空间现在被free释放掉了,但是指针p此时依旧是指向这块地址,由于该内存空间已经被系统回收了,此时我们指针p就是指向了一块非法的区域,变成野指针。        野指针的情况就是 指针指向一块非法区域,系统内有很多内存没有定义,那么不初始化指针,指针就。

2025-03-05 15:08:35 1034 1

原创 c语言笔记 指针篇(下)

首先我要明白定义一个什么样的指针,要看匹配什么样的类型。

2025-03-04 17:20:15 179

原创 c语言笔记 指针篇(上)

在计算的存储器中有很多的存储单元,我们的操作系统把这些存储单元以字节为单位进行编号,也就是每个存储单元(字节),都有编码。这些编码在我们内存中就称为地址。一个字节有八位,位是存储信息的最小单位,字节是存储单元的基本单位。指针就是地址;指针变量就是存放别人的地址的变量。(指针就是用来放地址的)一级指针存放整型,浮点型,字符型,数组,函数。那么一级指针存放别人的地址,它本身有地址吗?答案是有的,我们专门用二级指针来存放一级指针的地址。二级指针是存放一级指针的地址。那么二级指针也是有地址的,我

2025-03-04 17:13:53 433

原创 c语言笔记 数组篇

数组的是一块连续的内存空间,可以存放任意的类型(除了函数之外)int a[2]; //一维数组int  (b[3])   =  {1,2,3};               元素的类型 int ; 变量的类型是int [3]int  (a[2])  [3 ]  =  {{1,2,3},{4,5,6}},  元素的类型 int [3];变量的类型是int [2][3];int a[2][3] ,3不能省略,因为3是代表数组元素的类型。二维数组:意思是二维数组里面的元素是一维数组,而一维数组

2025-03-03 18:25:17 419

空空如也

空空如也

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

TA关注的人

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