![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 66
别辜负这场相遇
这个作者很懒,什么都没留下…
展开
-
通讯录(基础版本)
*实现一个通讯录:人的信息:名字+年龄+性别+电话+地址1.存放100个人的信息2.增加联系人3.删除指定联系人4.查找联系人5.修改联系人6.排序7.、显示联系人*//*test.c 测试功能contact.c 通讯录相关的实现contact.h 通讯录相关的声明d*/EXIT,ADD,DEL,CHANGE,CHECK,SHOW,SORT,int main()原创 2024-04-22 22:01:35 · 711 阅读 · 0 评论 -
字符串函数strcmp/strcpy/strcat/strlen/strncpy/strncat/strncmp/strstr/strtok/strerror /字符分类函数/字符转换函数
*strcmp 比较两个字符串的大小,一对一对的字节往后比标准规定:第一个字符串大于第二个字符串,则返回大于0的数字第一个字符串等于第二个字符串,则返回0第一个字符串小于第二个字符串,则返回小于0的数字1:abcdef2:abq2数组大于1数组,因为q>c*/return 0;str1++;str2++;原创 2024-04-21 21:39:13 · 355 阅读 · 0 评论 -
指针和数组练习题.
int main()// 一维数组// a为数组名,代表首元素地址//16//8// a为数组名,代表首元素地址,对a解引用,相当于对首元素解引用,*a代表首元素的值//4// a为数组名,代表首元素地址,对a进行+1操作,表示首元素+1,来到下一个元素的地址//8// --- 4//4// a为数组名,&a表示整个数组的地址//8// &与*号相互抵消,首地址// &a表示整个数组的地址,然后*号对其解应用,访问的时整个数组的值。原创 2024-04-19 09:36:24 · 330 阅读 · 0 评论 -
指针练习题
///此程序在X86环境下运行////由于还没学习结构体,这里告知结构体的大小是20个字节int Num;}*p;//假设p 的值为0x000000。如下表表达式的值分别为多少?//已知,结构体Test类型的变量大小是20个字节int main()//此时的p为struct Test*类型,+1跳过20个字节//p为unsigned long类型,长整形,+1//0x000001//p为unsigned int*类型,+1跳过四个字节。原创 2024-04-18 21:45:47 · 472 阅读 · 0 评论 -
指针的进阶大体复习(很简略,建议看前面发的详细的)
*内存 --> 内存的单元(1Byte) --> 编号 --> 地址 --> 指针故指针就是一个地址而已口头语说的指针一般指:指针变量指针变量就是一个变量,里面用来存放地址---*/原创 2024-04-17 23:18:46 · 364 阅读 · 0 评论 -
指针的进阶-4 回调函数 库函数qsort,快速排序的实现,模仿qsort排序.
/假设数组的状态时有序的 ,比如 1 2 3 4 5 6 7 8 9 10,就不用继续排序了。直接调用,而是再特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。//交换过说明数组不是有序的,flag置0。也就是第几次排序,和需要排序几次的和为n(n为需要排序的个数)第一次排序 第一次需要排序(n-1)次。第二次排序 第二次需要排序(n-2)次。第(n-1)次排序,也就是第九次排序。第(n-1)次需要排序1次。//整形冒泡排序,n个数需要排序n-1次。未完待续...........原创 2024-04-17 22:17:23 · 371 阅读 · 0 评论 -
指针的进阶-3
*原创 2024-04-17 22:12:20 · 740 阅读 · 0 评论 -
指针的进阶-2
return 0;原创 2024-04-17 20:02:17 · 493 阅读 · 0 评论 -
指针的进阶-1
*1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间2.指针的大小是固定4/8个字节(32位平台/64位平台)3.指针是有类型的,指针的类型决定指针的+-整数的步长,指针解引用操作时的权限。4.指针的运算*/原创 2024-04-16 21:02:56 · 368 阅读 · 0 评论 -
文件的读写
*原创 2024-04-15 22:04:09 · 761 阅读 · 0 评论 -
文件的打开
磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。原创 2024-04-11 23:45:53 · 581 阅读 · 0 评论 -
位段知识点
*一种节省空间的做法;位段只能在结构体里用*//*位段的内存分配1. 位段的成员可以是 int, unsigned int ,signed int 或者是 char ()类型2. 位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的。3. 位段涉及很多不确定因素,。*/struct S//先开辟5byte 32bitint _a : 2;//:后面的数字表示需要几个bit位,int _b : 5;原创 2024-04-11 22:39:48 · 349 阅读 · 0 评论 -
柔性数组知识点
*也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。1.必须在结构体里面2.必须是最后一个成员3.大小必须是未知的4.柔性数组在结构体中只能存在一个这就叫做柔性数组成员*//*原创 2024-04-11 21:59:23 · 394 阅读 · 0 评论 -
内存函数memcpy//memmove//memcmp//memset
*memcpy 内存拷贝 负责两份独立空间数据的拷贝函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。这个函数在遇到'\0' 的时候并不会停下来。如果source和destination有任何的重叠,复制的结果都是未定义的*/int i = 1;for (i = 0;i < num;原创 2024-04-10 21:18:27 · 779 阅读 · 0 评论 -
数据在内存中的存储
*构造类型--自定义类型 我们可以自己创建的新的类型数组类型比如 int arr[5]的类型为 int [5]char sy[8]的类型为char [8]结构体类型枚举类型联合类型*//*低地址 高地址大端字节序存储 11 22 33 44 (相反)数据低位在高地址,高位在低地址小端字节序存储 44 33 22 11 (相同)低位在低地址,高位在高地址*/原创 2024-04-08 23:11:32 · 503 阅读 · 0 评论 -
枚举知识点(enum)
///enum day//{// //原创 2024-04-08 22:24:31 · 337 阅读 · 0 评论 -
联合(共用体)知识点
这种类型定义的变量也包含一系列的成员,特征是这些成员(所以联合也叫共用体)。union Un//类似于共享单车,用c的时候不能用i,用i的时候不能用cint i;char c;u.c = 0x00;//4 共用地址return 0;原创 2024-04-08 22:11:59 · 252 阅读 · 0 评论 -
动态内存管理
mallocfreecallocrealloc//在栈空间上开辟四个字节//在栈空间上开辟10个字节的连续空间1. 空间开辟大小是固定的。2. 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。原创 2024-03-11 21:28:06 · 193 阅读 · 0 评论 -
大小端问题
低地址 高地址。数据在内存中存放的时候有一个顺序问题,大小端字节。大端:高字节在低地址,低字节在高地址。小端:高字节在高地址,低字节在低地址。原创 2024-03-11 21:05:09 · 250 阅读 · 0 评论 -
判断时注意类型转换
/ //因为sizeof的结果是 unsigned int 类型的 i是int类型的 存在强制类型转换。// // 11111111 11111111 11111111 11111111 //-1的补码。// 算数转换(当类型>=int时):向上转换,会向最大的那个类型转换。// // 小转大 int转换成unsigned int。原创 2024-03-11 21:00:33 · 385 阅读 · 0 评论 -
按位异或交换两个变量(不创建临时变量)
/ 0与任何数异或还是等于那个数。//交换两个变量,不创建临时变量。// 一个数与自身异或等于0。// 异或具有交换律。原创 2024-03-11 20:56:36 · 148 阅读 · 0 评论 -
用按位与方法统计二进制中1的个数(补码)
可以发现有四个1只要运行四次。原创 2024-03-11 20:50:20 · 131 阅读 · 0 评论 -
辗转相除法求两个数的最大公约数
/ printf("最大公约数为:%d\n", max);原创 2024-03-11 20:26:19 · 211 阅读 · 0 评论 -
数字,字符,转义字符之间的关系
字符串型的数组里才有'\0'原创 2024-03-11 20:14:01 · 97 阅读 · 0 评论 -
字符串知识点
enum SexMAN,WOMAN,SECORTint main()*/*/return 0;原创 2024-03-11 20:06:07 · 318 阅读 · 0 评论 -
转义字符。
/ 顾名思义,讲某种符号转换成仅具有字符含义的符号,比如"会自动找另一个"配对,但\",表示一个单纯的字符"//同时也将一些赋予特殊的含义,如\n代表换行的意思int main()////早期的编译器会把??)-->]??(-->[?)");)");//打印字符串的两种形式。原创 2024-03-11 20:03:20 · 301 阅读 · 0 评论 -
指针知识点
/内存会划分为一个一个的内存单元(一个内存单元大小1byte)//每个内存单元都有一个编号//{//向内存申请四个空间并存储10// //&a;//取地址操作符// //%p以地址的格式打印数据// printf("a的地址为:%p\n", &a);// //0000002CA4F4F574,十六进制编码形式// //若无static修饰。则每次都会重新开辟地址存储a,故每次运行地址会变。原创 2024-03-07 21:24:12 · 631 阅读 · 0 评论 -
五子棋游戏
/游戏代码的声明(函数声明,符号定于)#define ROW 10//棋盘的行数#define LIN 10//棋盘的列数//打印游戏菜单//三子棋游戏逻辑的实现//初始化棋盘//打印棋盘//判断是否连成三子//返回为1表示连成三子,返回0表示不成三子//比较两个字符是否相等,相等返回1;不相等返回0//判断从改子往上数共n个数是否一样//判断从该子往下数共n个数是否一样//判断从该子往左数共n个数是否一样//判断从该子往右数共n个数是否一样。原创 2024-03-07 20:57:07 · 634 阅读 · 0 评论 -
数组知识点
i < 10;i++)return 0;原创 2024-03-07 20:22:31 · 126 阅读 · 0 评论 -
扫雷游戏。
define ROW 10 // 棋盘的行与列数#define ROWS ROW+2 // 数组的行与列数#define NUMBERMINE 10// 雷的个数// 打印游戏菜单// 具体的扫雷游戏的逻辑// 初始化数组// 生成雷//打印数组,检查是否生成10个雷// 存储雷的数量// 根据board1将数据存储在board2中// 判断该位置周围雷的数量,并以字符的形式返回//打印棋盘//该位置雷的个数为0个,则需要扩散。原创 2024-03-07 19:53:55 · 472 阅读 · 0 评论 -
三子棋游戏
/游戏代码的声明(函数声明,符号定于)#define ROW 3//棋盘的行数#define LIN 3//棋盘的列数//打印游戏菜单//三子棋游戏逻辑的实现//初始化棋盘//打印棋盘//判断是否连成三子//返回为1表示连成三子,返回0表示不成三子//比较两个字符是否相等,相等返回1;不相等返回0//判断从改子往上数共n个数是否一样//判断从该子往下数共n个数是否一样//判断从该子往左数共n个数是否一样。原创 2024-03-07 19:40:31 · 222 阅读 · 1 评论 -
结构体知识点
/struct Peo //struct Peo是类型//{//};//通常采用这种方法//{//}P1,P2;//P1,P2是使用struct People结构体类型创建的两个变量//// 此时的P1,P2是两个全局变量//{//P3为局部变量////}原创 2024-03-07 19:33:50 · 824 阅读 · 0 评论 -
函数知识点
/交换两个整形变量的内容//当实参传递给形参的时候,形参只是对实参的一份临时拷贝,且拷贝的是实参中所存储的那个数,且形参有自己的内存地址//对形参的修改并不会形象实参的数值。原创 2024-03-05 20:33:13 · 654 阅读 · 0 评论 -
关键字解析
//auto局部变量默认都是auto类型,出了其作用域,变量自动销毁//typedef类型重定义(本质上是将类型起了个小名)typedef int in;typedef struct Node{ int date; struct Node* next;}Node;//int main()//{// auto int a = 10;// in b = 2;// printf("b = %d\n", b);// Node n2;///原创 2024-03-05 19:58:54 · 300 阅读 · 0 评论 -
分支和循环语句
/else只与离他就近的if匹配,就近原则//if和else和起来算一条语句//输出1-100之间的奇数//{i原创 2024-03-05 19:33:46 · 566 阅读 · 0 评论 -
二级指针。
/{// //一级指针//其中*代表p是指针,int代表p是指向int类型的变量的指针。p属于int*类型//// //二级指针// //二级指针变量是用来存放一级指针变量的地址的//其中第二个*代表p2是指针,int *代表的是p2指向的是int *类型的变量的指针,p2属于int**类型//先通过*p2找到p,在取*找到a//}原创 2024-03-05 18:17:34 · 325 阅读 · 0 评论 -
如何写出好的代码/易于调试的代码 减少bug
assert(判断语句);需要包含头文件#include 意思是符合括号内的条件才往下运行,否则错误。此时const修饰的*p 意思是*p的地位等同于常变量。p不能修改,但是*p可以修改。1.const放在*号左边。2.const放在*号右边。*p不能改,但是p可以改。第一个const修饰*p。第二个const修饰p。const 修饰指针变量。不可以通过变量名修改。但是可以通过地址修改。原创 2024-03-04 22:06:39 · 228 阅读 · 1 评论 -
一些BUG原因
2.其次存储的是arr,arr越界有可能访问到i的地址,故arr[12]有可能等于i。1.栈区存储数据的原理是从高地址开始存储,所以首先存储的是i。【】 高地址。【】 低地址。//可能会出现死循环。原创 2024-03-04 21:55:43 · 192 阅读 · 1 评论 -
Visual Studio调试方法
Debug:调试版本,包含调试信息,并且不做任何优化Release:发布版本,不包含调试信息,并且优化。原创 2024-03-04 21:52:15 · 387 阅读 · 1 评论 -
递归的例子
将一句话的单词进行倒置,标点不倒置。比如l like beijing.经过函数后变为: beijing. like l。每个测试输入包含1个测试用例: 工 like beijing.输入用例长度不超过100。【15分】标题:倒置字符串|时间限制:1秒|内存限制:32768K。依次输出倒置之后的字符串,以空格分割。工 like beijing.原创 2024-03-04 21:38:33 · 149 阅读 · 1 评论