
c语言
文章平均质量分 61
*闲鱼
一名摆烂的全能fw
展开
-
【c语言复习】
二维数组:行:sizeof(crr)/sizeof(crr[0]);列:sizeof(crr[0])/sizeof(crr[0][0])负数:-10 ->1.推算-10的原码1000 1010 2.按位取反加一 ->1111 0110补码。1101 0111 ->负->按位取反+1 1010 1001(原码)->计算结果:-41。时间复杂度、空间复杂度:->非递归:计算(数据结构) 递归函数:递归深度有关。X86 32位操作系统:地址->逻辑地址 4G。将大的问题规模分割为较小的问题规模。原创 2022-10-06 13:51:16 · 243 阅读 · 0 评论 -
文件操作(c语言)
文本文件:.txt .cpp (ASCII文件) 二进制文件 :.ppt .mp3 .mv .jpg(多媒体) 例:存储数据 123 (文件存储)字符对应的数字 49 50 51的二进制 0011 0001 0011 0010 0011 0011(ASCII) 123的16进制 7b 00 00 00,转换为二进制,底层为二进制(二进制文件)光标位置:文件头(SEEK_SET),当前位置(SEEK_CUR),文件尾(SEEK_END)原创 2022-09-13 11:32:13 · 293 阅读 · 0 评论 -
c中的常用语句
循环语句中存在break,continue两个语句,其中break为跳出循环,循环不在继续,而continue为跳出本次循环,继续循环。我们最常见的判断语句便是if……4)if else if else语句。3)do while 循环。2)简单if else。3)嵌套if else。......原创 2022-08-17 16:20:31 · 104 阅读 · 0 评论 -
项目中各文件的建立(vs)
源文件:一般分为.cpp和test.cpp .cpp文件:函数的实现 test.cpp:一般为主函数测试代码。文件:文件头一般都会有该语句 #pragma once 预处理指令 防止该文件被重复多次使用。头文件:结构体的声明和函数声明。...原创 2022-08-11 16:27:48 · 370 阅读 · 0 评论 -
变量的类型差异
a为静局部变量,b为局部变量,n为全局变量,第一次输出时a默认值 0,b为局部变量初始值-10,n为全局变量1,接下来b+=4,对局部变量加4,在该函数内有效,接下来调用函数,函数内部a为静态局部变量2,加2为4,全局变量加12为13,局部变量b为该函数内部的值为10,主函数输出这时的全局变量13,静态局部变量a为默认值0,局部变量b为-6,全局变量为13,然后对全局变量加10,调用函数,对函数内部的静态局部变量加2为6,局部变量b为10,全局变量加12为35....原创 2022-08-10 13:21:36 · 146 阅读 · 0 评论 -
结构体(c语言)
首先计算a所占字节(4),紧接着计算b长整型(8)字节,偏移量4字节是(该变量和对齐方式最小值)4的倍数,这是偏移量为12(4+8)字节,紧接着short类型(2字节),这时 12是2(该变量和对齐方式最小值)的整数倍,所以此时直接加上2(14),14是1字节(该变量和对齐方式最小值)的整数倍,直接加上去(15),15不是结构体中最大基本类型所占字节(long long 8字节和对齐方式4字节最小值)4的倍数,因此继续对齐(16-15)1字节,(此处16是4的最小整数(4)倍)所以总共所占字节为16字节..原创 2022-08-05 15:04:14 · 361 阅读 · 0 评论 -
动态内存(补)
在函数调用时使用形参p指向了cp,p指向动态建立的内存,因为p是形参,然后再函数调用完成之后便释放函数的所有东西,导致p被删了,所以建立的内存无法使用造成了内存泄漏,realloc(p,15*sizeof(int))//内存为申请后的总内存 将p的内存扩充为15 在已有的堆内存基础 上进行扩容。2)利用二级指针,将cp的地址传给p,堆p进行解引用指向新建的内存,这样函数结束之后,就算p被释放,也可以使用cp本身对堆进行内存的释放。int* p=&a;......原创 2022-08-03 16:27:45 · 93 阅读 · 0 评论 -
递归函数 动态内存开辟(函数调用机制)
malloc例int*p=(int*)malloc(1.8*1024*1024*1024);malloc(字节数)低地址->高地址进行内存开辟,程序员开辟,自己释放(防止内存泄漏)。3)形参进行存储空间开辟,形参拷贝实参,函数局部变量内存分配。1)建立栈帧空间(注栈帧函数的返回地址和函数调用上下文)6)恢复现场获取主调函数的运行状态,返回主调函数执行的地址。4)p=NULL,防止出现野指针(悬挂指针)3)形参体现问题规模,问题规模不断缩小。内存开辟栈高地址->低地址。.........原创 2022-08-01 13:55:20 · 235 阅读 · 0 评论 -
指针杂乱知识点总结(c语言)
这种情况下arr[]的建立,在main栈申请一个连续空间存放hello\0,brr[]建立时仍在main栈中申请一个连续空间存放hello\0,字符数组形式在局部作用域main栈中申请内容,一个数组一份"".此时arr=brr为错误(false).在上述代码的前提下,arr[0][3]*(*(p+0)+3)*(*(p)+3)(*p)[3]等价由该等价公式arr[3]=*(arr+3);my_strcmp函数my_strcpy函数my_strcat函数。.........原创 2022-07-31 17:01:00 · 214 阅读 · 0 评论 -
数组与指针,数组与函数,typedef,输入输出函数
scanf输入会有一个缓冲区,一般会由换行或者空格键进行分割确定缓冲区的结束,然而在先输入整型,紧接着输入字符时,系统会无法判断你输入完整型之后的换行是缓冲区结束还是你输入的下一个字符,因此会直接运行程序,不会让你输入字符p,要想代码正常运行,只需要在输出整形数字之后加getchar()语句,该语句为输入字符语句,代替了换行的位置,因此可以正常输入。4)typevoif(*pfun)(int,int);2)typedefint**ppoint;若定义int**类型的指针,直接用ppoint定义.......原创 2022-07-29 22:29:49 · 187 阅读 · 0 评论 -
指针的深入
第一种情况const在指针前,只限定指针指向的内容,指针本身可以改变,指向的内容不能通过指针进行改变;原因是栈的内存开辟为从高地址向低地址进行内存开辟,数组内存为从低地址向高i地址进行数据存储;代码后面的注释解释的很清楚,如果还是不能理解可以通过画图理解一下(画图比较潦草,希望理解)第二种情况const在指针后,只限定指针本身,不限定指针指向的内容,指针与数组结合的代码理解。因为在图中频繁进行箭头的改变,为此画图就省略了。1)const与一级指针的结合。2)const与二级指针的关系。...........原创 2022-07-22 10:37:28 · 204 阅读 · 0 评论 -
时间复杂度以及空间复杂度
算法时间复杂度在进行算法分析时,语句总执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况来并T(n)的数量级,算法的时间复杂度,也就是算法的时间量度,记作;第一种重新定义两个数组,将原数组整体遍历一遍,把其中的奇数和偶数放入新定义的两个数组中,即把原数组整体遍历了一遍,新定义两个数组遍历一次,相加之后为2n,根据大O阶规则计算时间复杂度为O(n),新开辟了两个数组,均遍历了一遍,和为2n,同样根据大O阶规则计算空间复杂度为O(n),此处因为代码运行效率第,不做代码演示。.........原创 2022-07-21 13:53:44 · 154 阅读 · 0 评论 -
指针(c语言)
&a可以理解为*(&a),&a表示取变量a的地址(等价于pa),*(&a)表示取这个地址上的数据,即*pa,也就是a;&*pa可以理解为&(*pa),pa表示a的地址,*pa即取pa指向的值(a),&(*pa)即是取a的地址,也就是pa;*&pa可以理解为*(&pa),(&pa)表示取pa的地址,*&pa表示取(&pa)上的数据,也就是pa本身;3.形参的改变要想改变实参的值必须1.传指针2.解引用。指针加1加一个单元格,单元格的大小取决于元素类型。1)指针的定义类型*名称。2)解引用*变量;.......原创 2022-07-19 16:00:20 · 280 阅读 · 0 评论 -
【运算符】
1/2=0(均为int)1.0/2=0.5(double/bit=double)1/2.0=0.5(int/double=double)~-1=0~-2=1~-3=2(取反与符号位无关)左移num原创 2022-07-19 09:51:22 · 99 阅读 · 0 评论 -
【数据类型】
/可转换4字节存放1字节charc=(char)a//1字节存放4字节需要强制转换。整型char(1)short(2)int(4)long(4)longlong(8)原创 2022-07-19 08:34:02 · 94 阅读 · 0 评论 -
数组(c语言)
j原创 2022-07-18 21:37:12 · 315 阅读 · 0 评论 -
进制的转换
进制转换原创 2022-07-18 08:44:28 · 578 阅读 · 0 评论