自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python-itheima

name = " \"两边是引号\" "列表里可以再嵌套列表t2 = ()t1 = (1, )# 以上都是元组# 注意t1 = (1)不是元组,是整数 t1 = (1,)才是元组str = "汉字 word 123"特点:可修改内容不支持重复内容不支持下标访问集合是无序的空集合不能用{}来定义,用{}的意思是定义字典注意,字典键值对的key不允许重复,后来者优先语法:**注意: ** 切片不改变原来的序列,只返回一个新序列倒着取。

2024-04-06 15:20:57 710

原创 CSS-freecodecamp

用section标签来区分部分,更加清晰。

2024-01-11 11:57:02 375

原创 JavaScript初见

for(i=0;i++)j++)//排他性在这里,先把所有的属性都清除,然后再做出想要的操作;</script></body>e.g.index就是自定义属性值读:element.getAtrributte(‘属性名’);写:element.setAttribute(‘属性名’, ‘属性值’);另:移除属性element.removeAttribute(‘属性名’);目的:保存并使用一些数据,如索引index。

2024-01-11 11:56:28 895

原创 Git命令(bash)

每个人都有全部代码,安全性有待考究。

2024-01-11 11:56:17 334

原创 洛谷(md版)

1.printf()一行一个双引号“”3.例题​​​4.这两者不一样上行:先转化成了浮点数,再运算下行:先运算的整数,得到结果,再转化成浮点数下行会丢失精度。

2023-12-07 17:57:11 388

原创 CSS(层叠样式表)

用相对路径来找到文件。

2023-11-25 18:21:57 65

原创 HTML(感觉入门阶段就是一些语法,记住能用就行,速过)

<title>西安原神大学</title><h1>院审,祁东!</h1><h2>扣一自动下载原神</h2><h3>卸载原神!</h3>

2023-11-24 18:03:52 16

原创 11.23

再次滚动异或得到的结果就是“单身狗”(因为其他相同的数字异或时得到的是0,0与任何数异或都是该数本身)位段开辟空间时,一个字节一个字节的开辟,然后按照你的规定去占用,不够了在开辟下一个字节。然后ret不断>>pos,pos++,并与1 按位与&得到ret的二进制中最靠右的1位。puc是数组名,表示unsigned char类型的指针,指向数组首元素。强制转换成struct tagPIM类型的指针,那么就会按照他的类型来读。地址有高低地址之分,你的变量的字节也有高位地位之分,同时按照位段的操作方式来操作。

2023-11-23 20:01:53 14

原创 11.22

fflush是刷新文件操作函数,可以把文件缓冲区中的信息写入到文件中。写宏时注意括号要带够了,要不然容易由于操作符优先级问题导致出现bug。宏可以用来统御某一个多次用到的、同一个意义的变量。f系列函数写入时有两种方式,二进制或文本形式。宏可以对函数进行一些操作,使得其更加灵活。2.换行时用到\,后面不能加任何东西。把宏中的参数以字符串的形式表示出来。宏还能实现一些函数做不到的事情。define定义标识符。

2023-11-23 17:45:53 18

原创 11.21

perror函数,perror("fopen");与printf("%s", strerror(errno));2.中间变量要勇敢peoinfo而不是contact,我们只需要联系人的信息,不需要count和capacity。1.不可直接把联系人全部加载进去,会溢出,要创建一个中间变量做缓冲,一个一个加载,如果空间不足,就扩容。fseek(文件指针,偏移量有正负,偏移起始位置)相对路径针对在工程文件内的文件;从pf里读n个字符,放到a里面,这是从文件中加载联系人的代码,读取文件中的内容更加灵活。

2023-11-21 17:00:12 20

原创 11.20

不推荐第二种,1.malloc,realloc多,容易忘记free导致内存泄漏 2.malloc用的多,内存碎片化。1.函数内部局部变量会在调用结束后销毁,指针会变成野指针,谁也不知道里面有啥。结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。10%30所得为10,被除数较小时,自己就是余数。4.求 最小公倍数和最大公约数。释放指针之后,就不要再操作了。不好说哪个好,但是道理是对的。

2023-11-20 18:46:46 27

原创 11.19

strerror括号里接收库函数的返回值,然后以%s的形式打印出来就是错误原因。()里面是errno,errno是全局的,库函数执行失败就会返回一个值给他。calloc:calloc(个数,大小),会自动初始化为0。情况2时,ralloc会自动释放原空间。能够动态修改已开辟的内存。动态内存管理函数常见错误。

2023-11-19 16:46:08 29

原创 11.18(通讯录)

【代码】11.18。

2023-11-18 10:29:01 26

原创 11.17

1.printf("%10d") 右对齐,10位,不足补空格。printf("%-10d") 左对齐,同上。运行在vs2022的环境下,是C语言。

2023-11-17 17:39:37 20

原创 11.16

网络工程有各种犄角旮旯的数据,如果都用统一的类型,内存太浪费、传输效率太低。#pragma 预处理指令,使用可以改变我们的默认对齐数。传址可以节省空间,加const也可以达到保护原参数的目的。(大小端:内存超过一个字节时才会涉及到这个东西)vs默认对齐数是8,有时会造成内存浪费。用传址传参,不要用传值传参。不确定因素太多了,少用。位段在网络方面应用多。

2023-11-17 15:18:30 19

原创 11.15

二维数组传参时,数组名表示第一行一维数组的地址,所以不能用普通指针接收,要用数组指针。思路一:先把第1位存下来,再将源字符串左移1位,然后把存下来的第一位放到末尾。思路二:以第k位为界限,把左右两边的字符串都逆序,然后整体逆序。一个抽象变量需要多个元素表示才能确定时,考虑结构体(坐标点)长度len,左旋k位。要旋转几个就运行几次。

2023-11-15 17:33:30 19

原创 11_14

现实语句的真假可以化为0与1的问题,然后配合所给条件,得出代码。2.把显示问题抽象成计算机问题。1.memset函数。

2023-11-14 21:38:28 18

原创 11.13

memmove是可以的(通过改变拷贝顺序(前->后,后->前)实现正确拷贝)memcpy不能拷贝给自己,memcpy负责拷贝两块独立空间中的数据。2.strtok(切割字符串函数)用到了静态变量,保证切割效果,字符转化函数(大小写转换)比较诡异,容易犯错,少用。

2023-11-13 19:13:00 58

原创 11.12

typedef unsigned int size_t strlen()不能直接相减,如果得到负数,也会按照正数来算,因为strlen的返回类型是无符号整型,两个无符号整形计算只会按照无符号整形来计算,没有负数。如strncpy(arr1,arr2,5)从arr2中取钱5个复制到arr1中。strcat使用时会从源字符串的末尾\0处开始覆盖追加。所以有了有长度限制的字符串函数:strn+系列。\0问题:遇到\0会停,否则一直计算。3.strcat(追加字符串函数)

2023-11-12 15:58:19 47

原创 11.11

4.数组指针类型的变量,哪怕只定义了一个[],也可以当做二维数组来用,此时步长是你定义的步长,2.加&,物理存储着首元素地址,抽象意义着一整个数组,步长为一整个数组。模仿老师的思路,自己的思路想不通可能是知识还不到位,了解不够充分。1.大多数情况指的是首元素地址,二维数组中指的是首行地址。指针变量加减运算时,结果是两个指针之间的变量数目,有正有负。2.sizeof内部只有单个数组名时,表示一整个数组。3.arr[1]等于*(arr+1),可以看成这样。指针典题,搞懂他,每天过一次,直到深入理解记忆。

2023-11-11 16:39:44 24

原创 11_10

p会从p开始往后遍历,p里面存的是一个4/8个字节的地址,谁也不知地址里面有没有表示\0的ASCII码值,所以谁也不知会不会在读取p的每一个字节时停下来。sizeof(arr)和sizeof(arr+1) sizeof里面如果只有数组名,则表示一整个数组,如果不是(进行了运算)那就代表首元素。strlen是一个函数,接收一个char*参数,从此参数开始往后一个字节一个字节遍历直到遇到\0停止,返回一个整数。从给定的地址开始往后数字符,直到遇到\0停下,本质是一个函数,有传参,有返回值。

2023-11-10 20:40:23 41

原创 数据结构与算法(大话数据结构)

节省空间:两个栈公用同一片空间,用两个不同的top指针,相向而行。先进后出+特定规则 形成的逻辑更加有趣。:用结构体数组来表示链表,有两个部分。栈与四则运算(先进后出的逻辑的运用)//该元素的数据内容。//下一个元素的下标。线性表的链式储存用的是结构体。:指针是重头戏,用到了结构体。常见操作:增删改查,判空判满。顶部指针常用top=-1。加个指针指向上一个元素。

2023-11-09 21:43:00 21

原创 11_09

冒泡排序:有两个变量 i j,一个用来比较和交换,另一个用来开启下一趟排序2.qsort(首元素,总个数,单位大小,比较方式)比较方式中要用到强制类型转换。1.冒泡排序与qsort。

2023-11-09 15:48:40 20

原创 11_08

函数指针调用函数(如计算器的实现),可以避免冗余代码,更加高明好好好。void类型不能直接解引用,需要强制类型转换。typedef重命名类型。代码中的实际指针运用。

2023-11-08 15:51:53 18

原创 11_07

二维数组的数组名表示第一行的地址(不同于第一行的首元素的地址,二者在内容上没有区别,但是在权限、步长上有很大区别)。用指针接收时,二维数组要用数组指针来接收(便于指针运算时换行操作),一维数组则用普通指针接收即可。int (*)[5]这是一种类型,可以是单个变量,也可以是数组(就像int a;int* p =arr和int (*p)[] = &arr是不同的,&arr指的是整个数组。int (*p)(int,int) = &add或者add。&函数名和函数名都表示函数的地址,所以,p和add等价。

2023-11-07 18:02:46 25

原创 11_06

ps:sizeof->字节数,strlen->字符个数(不包括\0 )调用时的规则参考数组的规则:arr[i] = *(arr + i)2.上图中的“abcdefg”是常量字符串,不能用*p进行更改,1.关键知识:&arr的含义与理解(指的是整个数组)该常量放在内存中的只读数据区,只能读不能改。去掉名字剩下的就是类型。

2023-11-06 17:44:40 32 1

原创 11_04

IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1(二进制),因此可以被舍去,只保存小数点后面的 xxxxxx部分。E是无符号的整形,但是因为要有正负,所以规定了中间数,如float中中间数为127,这意味着,如果E为8位,它的取值范围为0~255;但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即 10001001。

2023-11-04 19:10:47 32 1

原创 11_03

代码中,类型是一种解读内存中二进制数得角度,同一语句中,不同得解读方式要统一(整型提升,算数转换)。如:char变量赋值32位整数,short变量打印成%d,d表示有符号得整数。原因:是用补码可以将符号位和数值位统一处理,将减法和加法统一处理。思路:通过指针和强制类型转换,取整形的第一个字节的内容,判断之后得结果。大小端储存,高位是表示数字大的那个位(百位),低位是小的(个位)判断大小端:*(char*)&a == 1。1.数据类型:整形,浮点,指针,构造体。无符号类型不认符号位,都是数值位。

2023-11-03 17:42:31 18

原创 11_02的杂项知识

a==b==c ——>错误的,若a==b,则变成1,否则变成0,不能起到比较的作用。指针的类型不同于变量时,步长会变,偏底层了。

2023-11-02 11:56:21 19

原创 11_1凑字数的标题

调试Debug.1.F5调试运行 F9打断点 F10逐过程调试 F11逐语句调试2.窗口局部变量,监视窗口,自动窗口查看内存,堆栈,汇编,寄存器的窗口3.像这种,调试才能找出来原因:数组越界访问,恰好(vs2022)访问到了i的位置,导致死循环4.什么是优秀的代码:简洁,高效,健壮此处while语句实现了多个功能PS:\0的ASCII值为05.assert(<assert.h>)判断对错函数:assert(exp)exp为真则无影响,为假则终止程序并且报错。

2023-11-01 21:01:30 22

原创 10_31

不同类型计算时(无强制类型转换),会按照从低到高的方向执行算术转换(如:int转换成unsigned int时 不改变数字,改变cpu的读取方式,符号位变成算术位(如:负整数与无符号整数的运算)int ,unsigned int, long, long long,float ,double则遵从算数转换规则。n & (n-1)常用于统计二进制中有几个1,涉及二进制的多去考虑考虑。用1和n比较,然后右移n,移动32次,是一则统计。二进制的递变性质每一次减一都有位的变化。scanf的返回值是输入的值的个数。

2023-11-01 15:18:09 20

原创 10_29

在定义结构体时,可能会出现“不允许使用不完整的类型”问题,常出现在数组上,加[]即可。结构体 struct。访问,有两个 . 和 ->可以嵌套,结构体套结构体。1.定义,最好在外面。定义结构体时注意顺序。

2023-10-31 20:19:16 33 1

原创 10_28 + 10_29

4.存十六进制的时候一个十六进制对应四个二进制位,两个十六进制数占用一个字节如0x11-->00010001。3.sizeof返回的类型是无符号类型,->unsigned int->用%u接受。特殊情况:一个指针变量存的是一个已经销毁的变量的地址,这种情况相当不稳定,非法的。3.写出来一个东西,不要满足于能运行,有结果,想想能不能优化。*(parr[i])对得到的指针变量再次解引用,得到变量本身。parr[i]表示*(parr + i),得到指针变量,int*类型+1,跳过四个字节;

2023-10-29 15:45:09 60 1

原创 10_26

2.整型提升(大小小于整形的类型):a b两个char 类型相加时,要整型提升成整形,然后相加,再转化成char。比int大的类型运算时会把小的转化成大的int->double(寻常算数转化)结合性就是多个相同优先级的符号在相邻时,它的运算顺序(L-R是从左向右,N/A是没有优先级)char - >int :取补码,补符号位(一就是一,0就是0,换原码)int - > char :取补码,截8位,换原码。,需要先转换成整形再运算(cpu的硬件问题)i = i-- ---i*(i/12);

2023-10-26 15:47:59 20

原创 10_25 结构体

3.对结构体中的数组进行输入时,要用strcpy(char arr1,"abcdefg"or arr2)2.函数参数是结构体时,最好用指针:可以直接对原结构体造成影响,也可以节省空间。有一定的限制:比如当函数传参时加了指针,得用(*ps)才能正常用。结构体变量中是 ,->可以直接用:(ps->member)4.访问结构体成员时用 . 或者 ->然后定义结构体名字,输入对应的值。1.先定义一个结构体模型。

2023-10-25 21:50:03 22 1

原创 10 25 操作符

3.位操作符&(与:两个都是一返回1) |(或:有一个是1返回1) ^(异或:两个不一样返回1)关于数组:只有sizeof后面的数组名指的是整个数组,其他的都是首元素地址,是指针,4个字节。异或的结论:0^a=a;从左到右,一个一个执行,但是整个表达式的结果是最后一个式子的结果。[]是一个操作符,负责检测两个东西,意义是*(arr+1)p里面是a的地址,*p是a内部的值。&取地址用%p接受,取得是变量的第一个字节的地址。这里的a是0,为假,&&后面的也不用计算了。这里的a是1为真,||后面的不用计算了。

2023-10-25 21:29:10 19 1

原创 鹏哥c——扫雷

在init处出现了错误,ROWS传参写成了ROW,导致mine中只有[0][0]到[8][8]有内容。从而导致print这步出现问题,打印只能打印8x8。1.对二维数组初始化时,注意。声明->定义->调用。

2023-10-25 15:13:07 31 1

原创 递归笔记捏

二维数组arr[x][y]x可以省略,y不行。

2023-10-22 11:21:38 20 1

原创 字符串数组逆序

字符串的传址传参,字符串中\0的意义和用法,*(arr+len-1)这种外观的数组表示方法。参数越少,逻辑就越复杂,难度越大,但是更简洁。

2023-10-22 10:47:37 19 1

原创 三子棋//

1.fun(char board)和fun(board)区别很大,写后者时在你判断胜负的时候会跳出 表达式必须包含指向对象的指针类型,但他具有类型"int"。2.下棋时注意表示棋子坐标的参数要放在循环内,如果放在循环外,当你输入错误时无法做出有效措施,让你重新输入。找不到鹏哥源码的可以私我。

2023-10-21 15:59:38 20 1

空空如也

空空如也

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

TA关注的人

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