- 博客(17)
- 收藏
- 关注
原创 C语言字符函数和字符串函数
如果str1指向的字符串中存在str2指向的字符串,那么返回第一次出现位置的指针。如果str1指向的字符串中不存在str2指向的字符串,那么返回NULL;strstr函数,查找str2指向的字符串在str1指向的字符串中第一次出现的位置。返回了str指向的字符串的长度,返回的长度不会是负数,所以返回类型是size_t.字符串追加,将 src 指向的字符串中所有字符都追加到 dest 指向的空间。统计参数str指向的字符串的长度。字符串追加,把src指向的源字符串中的所有字符都追加到dest指向的空间中。
2026-07-31 23:08:59
162
原创 C语言总结----2
void*:通用指针、无类型指针。优点:可以接受任意类型指针记录的地址;缺点:无法获取变量里面的数据,也不能进行加减运算;int main()// 解引用前强制转换//100p = &c;
2026-07-29 11:17:11
231
原创 C语言指针总结----1
4.给指针变量赋值的时候,不能把一个数值赋值给指针变量;3.指针变量占用的大小,跟数据类型无关,跟编译器有关;2.指针变量的数据类型要跟指向变量的类型保持一致。数据类型:要跟指向变量的类型保持一致。3.5函数的结果和计算状态分开。格式:* 指针名 = 数据值。3.3操作其他函数中的变量。1.指针 = 内存地址。数据类型 * 变量名。变量名:自己起的名字。3.4函数返回多个值。
2026-07-28 22:14:14
191
原创 C语言数组与指针 一维数组
1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小;如果操作符是类型的话,计算的是使用类型创建的变量所占内存空间的大小。sizeof是操作符,用来计算变量所占内存空间大小的,单位是字节;2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址;3.除此之外所有的数组名都表示首元素的地址。
2026-07-25 17:58:47
387
原创 C语言指针深入III 回调函数
void run(void (*pf)()) // 接收函数指针参数的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数,回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另一方调用的,用于对该事件或条件进行的响应。例一:用回调函数实现一个计算器 (整数的加法,减法,乘法,除法)qsort调用比较函数是:cmp(p1,p2)返回值规则。认为*p1排在*p2前面。
2026-07-24 22:35:15
161
原创 C语言函数指针深入II 学习总结
存放的是浮点型变量的地址,能够指向浮点型数据的指针;存放的应该是数组的地址,能够指向数组的指针变量。整形指针变量:int * p;存放的是整型变量的地址,能够指向整型数据的指针;例八:对函数指针数组是如何在c语言定义,以及怎样使用函数指针数组。数组指针 指针数组是一种数据,数组中存放的是地址(指针)例六:二维数组传参的本质即这个数组第一行一维数组的地址。例四:字符指针数组存储字符数组的第一个元素地址。&函数名还是函数的地址。函数名就是函数的地址。例一:什么是字符指针,怎么定义的。例五:数组指针变量的定义。
2026-07-23 23:13:54
204
原创 普通变量与数组的函数传参差异
解说:通过给swap函数传递&n,&m地址;同时在函数swap参数里面,我们使用指针变量int *x,int *y来接受传来的地址,这里还要注意在swap函数体中,不要将*x写为x;通过swap函数,我们是想改变这两个数的输出顺序交换后为:n = 20,m = 10;,但是并没有按照我们的想法来,这是为什么呢?,拷贝一份数据,函数改的是副本,主函数原值不变。交换前为:n = 10,m = 20;交换后为:n = 10,m = 20;例一:值传递,不改变主函数里变量的值。例二:地址传递,实现两数的交换。
2026-07-23 11:00:29
497
原创 C语言指针深入 I 学习总结
1. 放在*的左边:const修饰的指针变量指向的内容,不能通过指针变量修改它指向的内容,但是指针变量的指向是可以修改的;2.放在*的右边:const修饰的指针变量本身,指针变量的指向是不能修改的,但是指针指向的内容,是可以通过指针来改变;解说:不能直接修改 const 修饰的 a,但借助指针可以绕开限制,间接修改 a 存储的数据;借助指针获取地址,可以间接修改局部 const 变量里面的值。就是指针指向的位置是不可知的(随机的,不正确的,没有明确限制的).条件为假,程序直接崩溃,打印出错文件、行号。
2026-07-22 22:47:10
176
原创 C语言指针基础 学习总结
我们定义的普通变量(int、char、float等)都会占用对应的内存空间,变量的本质是内存中一块空间的别名,而变量的地址就是其占用内存空间的起始地址。地址是操作系统层面的数值标识,专门用于定位内存空间,也是指针所有操作的基础。计算机内存是连续的存储空间,系统会为内存中每一个字节的空间分配唯一的编号,这个编号就是。,只会改变变量a内存中最后一位字节的数据,其余高位字节数据保持不变。,通过指针地址的大小关系,判断遍历是否结束,实现数组完整遍历。六.指针运算:指针+-整数,指针-指针,指针的关系运算符。
2026-07-21 22:30:38
348
原创 两个数交换你会几种方法?
以上就是我总结的三种两数交换方案,每种方法都有各自的优缺点。如果你有见过其他交换数字的 trick,或是对溢出、异或运算有不一样的理解,欢迎在下方评论区一起讨论,大家一起互相学习~第一种方案:不含第三个变量计算;这种方法可能会溢出,a+b的值会溢出;第二种方案:不含第三个变量计算;不会出现溢出,但是只能适用于整数变量。这里需要使用异或特点:可以交换。第三种方案:使用第三个变量。
2026-07-20 21:05:44
408
原创 新手在刚下VS2026中,常见的几种错误
改完之后就会有这样的提示,你就把它删掉,你的代码里如果有中文的话,就会出现乱码,不用担心,你只需要按下ctrl + z,然后按下ctrl + s 即可,中文就不会乱码了。在最上面一排选项中,找到 “工具 ” ,点击最后一个 “选项”点击一下UTF,就能看到 “通过编译重新打开” 然后点击这个,1.乱码错误,当printf打印中文时,编译出来乱码了;就会出现下面一样的选项,选择简体中文(GB2312),显示如图,然后按下确认,当前文件下的编译就已经成功了。点开环境,去找 “文档”这个选项,
2026-07-20 09:08:51
353
原创 static和extern关键词
static修饰局部变量改变了变量的生命周期,生命周期改变的本质是改变了变量的存储类型,本来一个局部变量是存储在内存的栈区的,但是被static修饰后存储到了静态区。存储在静态区的变量和全局变量是一样的,生命周期就和程序的生命周期一样了,只有程序结束,变量才销毁,内存才回收。希望变量不消毁,保留上一次运行的结果,未来一个变量出了函数后,我们还想保留值,等下次进入函数继续使用,就可以使用static修饰;1:局部变量的生命周期是:进入作用域变量创建,生命周期开始,出作用域生命周期结束。
2026-07-19 22:38:36
239
原创 函数递归与迭代
在例1中,我们定义一个变量去表示我们输出的整数,然后利用print函数去将整数1234,一步一步化简成规模较小的子问题求解。在函数体中进行判断,发现1234 > 9,所以进行print(123),并没有直接输出printf(1);然后继续递推判断,在判断到print(1)时,发现1 < 9,然后就开始打印printf语句,回归的方式打印输出,最后输出1 2 3 4;1:递归存在限制条件,当满足这个限制条件的时候,递归便不继续再。递就是递推的意思 ,归就是回归的意思。第一种:递归方法实现n的阶乘。
2026-07-18 23:29:30
157
原创 函数加数组实践——排雷
static size_t GetMineCount(char mine[ROWS][COLS], int x, int y)//使用static是为了只在这个文件里使用这个函数,这个函数主要是计算你输入数组里的雷的个数。if (x >= 1 && x <= r && y >= 1 && y <= c)//判断坐标,不要超出范围。if(board[x][y] == '0')//判断是否为0,是0就布雷。
2026-07-18 22:53:13
154
原创 蓝桥杯单面机STC15
STC15 单片机的 LED 灯接在 P0 口,低电平点亮、高电平熄灭P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;(关闭外设、配置 P0 口为输出且初始全灭)// 位定义,给P0^0起别名LED1P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;LED2 = 1;// L1亮、L2灭for(i = 0;i < 65535;i++);LED1 = 1;LED2 = 0;// L1灭、L2亮for(i = 0;
2026-02-28 23:22:31
287
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅