C语言
文章平均质量分 87
C语言
三春去后诸芳尽
月光照在路上
展开
-
C语言库函数记录
目录链接1、开平方 - sqrt2、判断字母 - isalpha3、字符串拷贝 - strcpy4、断言 - assert5、字符串长度 - strlen6、以字节为单位初始化 - memset链接blog库函数1、开平方 - sqrt2、判断字母 - isalpha头文件:#include <ctype.h>isalpha - 专门用来判断一个字符是不是字母是字母返回非0不是字母返回03、字符串拷贝 - strcpystrcpy - string copy -原创 2021-08-13 12:11:26 · 3128 阅读 · 0 评论 -
C语言深度解剖:关键字
目录一、输入输出第一种方式:第二种方式:循环读取n个数字二、方法1、求1-10的和**2、注意问题3、计算1!+2!+3!+4!+5!4、形参和实参5、方法的重载 overload6、模拟用户输入密码三、编程题1、猜数字游戏2、判断素数3、输出9*9乘法口诀表4、求两个正整数的最大公约数5、计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值6、1到 100 的所有整数中出现多少个数字9一、输入输出第一种方式:import java.util.Scanner;pub原创 2021-10-22 15:04:14 · 3522 阅读 · 11 评论 -
程序的编译与链接、预处理符号、指令
程序的编译与链接1、程序编译组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中2、源文件到可执行程序的过程预编译 编译 汇编链接运行通讯录程序源文件(.c) ,各自单独通过编译器编译生成目标文件(.obj) ,加链接库生成可执行程序(.exe)原创 2021-10-12 14:26:14 · 3329 阅读 · 20 评论 -
文件操作(文件指针+顺序/随机读写)
一、文件什么是文件:磁盘上的文件就是文件1、以文件功能分类:程序文件:源程序文件test.c 目标文件test.obj 可执行程序test.exe数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要 从中读取数据的文件,或者输出内容的文件,如:data.txt2、文件名一个文件要有一个唯一的文件标识,以便用户识别和引用。文件名包含3部分:文件路径+文件名主干+文件后缀例如: c:\code\test.txt为了方便起见,文件标识常被称为文件名。原创 2021-09-27 18:14:02 · 3887 阅读 · 14 评论 -
【动态内存管理】动态内存分配、常见错误、经典笔试题、柔性数组
目录一、动态内存分配1、为什么存在动态内存分配二、malloc1、malloc、free2、calloc2.1、与malloc有何区别3、realloc4、常见错误4.1、 对malloc返回值判断4.2、对动态内存空间的越界访问4.3、释放非动态内存空间4.4、使用free释放一块动态开辟内存的一部分4.5、对同一块动态内存多次释放4.6、动态开辟内存忘记释放(内存泄漏)一、动态内存分配1、为什么存在动态内存分配空间开辟大小是固定的数组在声明的时候,必须指定数组的长度,它所需要的内存在编译时分原创 2021-09-25 17:57:14 · 3745 阅读 · 8 评论 -
【Contact】结构体+动态内存管理+文件存储实现简易通讯录代码
静态版本test.c#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"void menu(){ printf("************************************\n"); printf("***** 1. add 2. del *****\n"); printf("***** 3. search 4. modify *****\n"); printf("***** 5.原创 2021-09-24 18:31:51 · 96992 阅读 · 0 评论 -
自定义类型详解:结构体(内存对齐、位段) + 枚举 + 联合
数据类型:C语言内置类型:— char short int long float double自定义类型/构造类型:— 结构体,枚举,联合数据的存储 - 类型详解一、结构体1、特殊的声明在声明结构体的时候,可以不完全地声明匿名结构体struct{ int a; char c; double d;}s1, s2; // correctint main(){ struct s3; // err return 0;}匿名结构体类型struct{ int原创 2021-09-22 17:20:49 · 2945 阅读 · 0 评论 -
字符函数、字符串函数、内存函数用法及其模拟实现
目录1、strlenstrlen的模拟实现2、strcpystrcpy模拟实现3、strcat - 字符串追加模拟实现strcat4、strcmp - 比较字符串模拟实现stcmp5、长度(不)受限制的字符串函数strncpstrncatstrncmp6、strstr - 字符串查找模拟实现strstr7、strtok - 分割字符串8、内存拷贝函数 - mem..8.1、memcpy模拟实现memcpy1、strlensize_t strlen ( const char * str );str原创 2021-09-16 18:25:07 · 3237 阅读 · 0 评论 -
指针笔试题及其解析、字符串左旋、字符串追加strcat
笔试题1#include <stdio.h>int main(){ int a[4] = { 1, 2, 3, 4 }; int* ptr1 = (int*)(&a + 1); int* ptr2 = (int*)((int)a + 1); printf("%x,%x", ptr1[-1], *ptr2); // 4,2000000 return 0;}笔试题2#include <stdio.h>int main(){ int a原创 2021-09-08 20:54:36 · 3042 阅读 · 0 评论 -
【C语言指针】 回调函数、冒泡函数模拟实现qsort、指针和数组笔试题解析
一、回调函数定义:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。用回调函数形式实现加法运算int Add(int x, int y){ return x + y;}void Calc(int (*pf)(int, int)){ int ret = pf(3, 5原创 2021-09-01 17:17:10 · 3397 阅读 · 0 评论 -
【C语言】指针进阶 - 指针数组 数组指针 数组指针传参 函数指针 指向函数指针数组的指针
目录int main(){ const str1[] = { "hello bit." }; const str2[] = { "hello bit." }; const char* str3 = "hello bit."; const char* str4 = "hello bit."; if (str1 == str2) //数组名 比较两个字符串首元素地址 printf("str1 and str2 are same\n"); else printf("str1 and s原创 2021-08-11 15:46:50 · 3728 阅读 · 0 评论 -
数据的存储 - 大小端、浮点数的存储规则
目录写程序判断当前机器的字节序练习:浮点型在内存中的存储以下代码输出结果是什么?浮点数存储规则1、规则2、浮点数的存储3、浮点数如何取出写程序判断当前机器的字节序#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int a = 1; char* p = (char*)&a; if (*p == 1) { printf("小端\n"); } else { printf("大端\原创 2021-08-09 15:27:53 · 5026 阅读 · 0 评论 -
函数栈帧的创建和销毁图解
目录一、问题:二、寄存器 栈区1、寄存器有哪些?有什么作用?2、编译环境3、栈区的使用习惯:4、main函数也是被其他函数调用的5、汇编代码三、为main函数创建栈帧1、main函数之前的函数2、压栈push3、为main函数预开辟空间三、准备abc变量四、调用Add函数五、进入函数六、返回七、总结:1、局部变量是怎么创建的:2、为什么局部变量不初始化是随机值:3、函数是怎么传参的,传参的顺序是怎样的:4、形参和实参是什么关系:5、函数调用结束后是怎么返回的:一、问题:局部变量是怎么创建的:为什么原创 2021-08-07 09:02:29 · 3313 阅读 · 1 评论 -
实用调试技巧 Debug Release F10 F11 初始化 越界访问 堆栈 模拟实现库函数
目录一、什么是bug二、调试是什么?有多重要?1、调试2、调试的基本步骤三、Debug和Release四、windows环境调试介绍1、调试环境的准备2、学会快捷键F5 启动调试F9 启用/关闭断点F10 逐过程F11 逐语句CTRL + F5 开始执行(不调试)其他快捷键3、调试的时候查看程序当前信息3.1、查看临时变量的值3.2、查看内存信息3.3、查看调用堆栈3.4、查看汇编信息3.4、查看寄存器信息五、一些调试的实例1、求 1!+2!+3! ...+ n! 不考虑溢出。2、越界访问NICE 笔试题3原创 2021-08-03 14:18:15 · 4581 阅读 · 0 评论 -
【C语言指针】 指针+-整数、指针-指针、解引用、指针数组、二级指针、结构体声明、初始化、传参
目录一、指针运算1、指针+-整数1.1、把数组每个元素赋成01.2、指针大小2、指针-指针指针-指针 得到的数字的绝对值是指针和指针之间元素的个数指针-指针求元素个数3、指针的运算关系代码1 从后往前改代码2 从前往后改总结二、指针和数组1、数组和指针的区别:2、数组名2.1、数组名地址 数组地址三、二级指针1、什么是二级指针2、二级指针的运算 两层解引用四、指针数组1、指针数组指针还是数组-数组2、地址解引用结构体一、结构体的声明1、结构的基础知识2、结构的声明3、结构成员的类型4、结构体变量的定义和初始原创 2021-08-02 19:10:46 · 16758 阅读 · 0 评论 -
C语言操作符详解 隐式类型转换 (整型提升 算数转换)
目录一、算术操作符二、左移操作符 右移操作符1、二进制序列2、左移操作符3、右移操作符3.1、逻辑运算/算术运算3.2、对于移位运算符,不要移动负数位,这是标准未定义的3.3、对于移位操作符 操作数必须是整数三、位操作符1、&按位与:只要有0就是0,两个同时为1才是12、| 按位或:只要有1就是13、^ 按位异或:相同为0,相异为14、使用:4.1、可以求a的二进制序列的最低位是多少4.2、可以统计内存中补码二进制序列位有多少个15、一道变态的面试题5.1、使用变量:5.2、用和减5.3、用按位异或原创 2021-07-30 13:11:28 · 4969 阅读 · 0 评论 -
【C语言】扫雷游戏
目录标题一、新建项二、主函数 do while三、打印菜单四、game函数1、创建数组2、定义行列3、初始化棋盘4、打印棋盘5、布置雷6、排查雷五、代码test.cgame.hgame.c一、新建项test.c - 测试游戏game.h - 游戏函数的声明game.c - 游戏的实现二、主函数 do while定义input变量,存放用户输入的数字。如果用户输入1,开始游戏进入game函数;如果用户输入0,显示”退出游戏”break;如果用户输入的是错误的数字,提示“选择错误,重原创 2021-07-30 11:56:14 · 3263 阅读 · 0 评论 -
【C语言】三子棋游戏
目录标题一、新建项二、主函数 do while三、打印菜单四、三子棋的过程1、棋盘数组2、初始化棋盘3、打印棋盘4、下棋4.1、玩家下棋4.2、电脑下棋4.3、判断游戏输赢五、代码1、test.c2、game.h3、game.c一、新建项test.c - 测试游戏game.h - 游戏函数的声明game.c - 游戏的实现二、主函数 do while定义input变量,存放用户输入的数字。如果用户输入1,开始游戏进入game函数;如果用户输入0,显示”退出游戏”break;如果用户原创 2021-07-29 23:08:33 · 2936 阅读 · 2 评论 -
【C语言数组】数组的创建和初始化 内存中的存储 冒泡排序 sizeof 数组名
【C语言】数组1 - 数组的创建和初始化 内存中的存储一、一维数组的创建和初始化1、数组的创建2、数组初始化2.1、不完全初始化2.2、不初始化3、一维数组的使用3.1、用下标打印1-103.2、sizeof 计算数组的元素个数4、一维数组在内存中的存储4.1、连续递增4.2、 整形指针加1是4个字节一、一维数组的创建和初始化1、数组的创建数组是一组相同类型元素的集合#include <stdio.h>int main(){ int arr[20]; return 0;}原创 2021-07-27 00:13:07 · 3208 阅读 · 0 评论 -
【C语言函数】 - 库函数、自定义函数、函数参数、函数调用、嵌套调用链式访问、递归与迭代、缓冲区
【C语言】第四节 - 函数1一、函数是什么二、C语言中函数的分类1、如何学会使用库函数1.1、strcpy1.2、memset2、自定义函数2.1、与库函数的区别2.2、写一个函数可以找出两个整数的最大值2.3、写一个函数可以交换两个整形变量的内容无函数err 传值正确写法 传址三、函数参数1、实际参数2、形式参数四、函数调用传值、传址五、练习1、写一个函数判断一个数是不是素数2、写一个函数判断是不是闰年3、写一个函数 实现一个整数有序数组的二分查找4、写一个函数 每调用一次这个函数 就会将num的值增加一原创 2021-07-24 16:42:34 · 4113 阅读 · 0 评论 -
C语言分支语句和循环语句及练习
【C语言】第三节 - 猜数字游戏 整数排序 打印倍数 最大公约数 辗转相除法1、猜数字游戏随机数 时间戳2、写代码将三个整数数按从大到小输出3、写一个代码打印1 - 100之间所有3的倍数的数字4、给定两个数,求这两个数的最大公约数暴力求解辗转相除法1、猜数字游戏随机数 时间戳#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <time.h>//原创 2021-07-19 15:34:09 · 4056 阅读 · 1 评论 -
『初识C语言』语法入门详解
【C语言】初识C语言 - 第一节课前准备github - giteeGitHubGitee思维导图xmind - 整理框架学习点:语⾔数据结构和算法操作系统计算机⽹络实战项⽬一、C语言(面向过程)C语⾔:(⾯向过程)计算机语⾔,⼈和计算机交流的⼀种语⾔擅⻓底层应⽤开发 电脑硬件ANSI C - C国际标准1. 机器语⾔ - 2进制 0和12. 汇编语⾔ - 助记符例:0101 - ADD0000 - JMP3. B语⾔4. C语⾔二、第⼀个C语言程序He原创 2021-07-18 14:39:07 · 4768 阅读 · 0 评论