
C
文章平均质量分 69
来学习的小张
加油学习,努力进步
展开
-
【C语言】实现通讯录的增删改查、动态扩容及将信息保存到文件中
目录一、test.c二、头文件声明三、通讯录实现的功能模块介绍1.初始化通讯录静态版本:动态版本:加载文件信息到通讯录2.添加联系人静态版本:动态版本:核查通讯录容量3.销毁通讯录4.显示所有的联系人5.删除指定联系人6.查找指定联系人7.修改指定联系人8.保存信息到通讯录中总结本工程项目总共分为3部分,分别是:头文件部分,测试部分及通讯录具体实现部分。接下来分块来进行介绍:一、test.c首先是测试部分,这部分主要完成通讯录各个功能的入口,及一个菜单显示页面。具体实现程序如下:#define _C原创 2021-10-07 17:06:52 · 969 阅读 · 14 评论 -
程序的编译、链接及预处理详解
目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言程序在从test.c文件变成可执行的test.exe文件一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warnin原创 2021-10-03 16:25:52 · 369 阅读 · 16 评论 -
【C语言】文件操作
目录前言一、文件1.程序文件2.数据文件3.文件名二、文件的打开和关闭1. 文件指针2 .文件的打开和关闭打开方式:三、文件的顺序读写1.fputc 和 fgetc2.fgets和fputs3.fprintf和fscanf4.fread和fwrite5.sprintf和sscanf四、文件的随机读写1.fseek2.ftell3 rewind五、文本文件和二进制文件六、文件读取结束的判定七、文件缓冲区前言当我们写了一段代码需要对数据进行处理的时候,此时数据是存放在内存中,当程序退出的时候,数据就不存在原创 2021-09-28 16:26:04 · 222 阅读 · 18 评论 -
动态内存(malloc、calloc、realloc)详解
目录前言一、动态内存函数的介绍1.1 malloc和free1.2 calloc1.3 realloc二、常见的动态内存错误2.1对NULL指针的解引用操作2.2对动态开辟空间的越界访问2.3 对非动态开辟内存使用free释放2.4 使用free释放一块动态开辟内存的一部分2.5 对同一块动态内存多次释放2.6 动态开辟内存忘记释放(内存泄漏)三、关于动态内存的经典例题例题一例题二例题三例题四四、柔性数组4.1 柔性数组的特点4.2 柔性数组的使用应用特点1、2应用特点1、2、3一般方法前言我们在以前原创 2021-09-25 20:53:20 · 1003 阅读 · 16 评论 -
【C语言】指针详解
目录前言指针概念一、字符指针例题一二、指针数组例题一例题二例题三三、数组指针3.1数组指针的定义例题一例题二3.2 &数组名VS数组名3.3数组指针的使用例题一例题二例题三四、 数组参数、指针参数4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参五、函数指针例题一例题二六、函数指针数组七、指向函数指针数组的指针八、回调函数使用回调函数,模拟实现qsort(采用冒泡的方式)前言指针概念指针就是个变量,用来存放地址,地址唯一标识一块内存空间。指针的大小是固定的4/原创 2021-09-22 17:06:43 · 357 阅读 · 18 评论 -
C语言中对自定义类型(结构体、枚举、联合)的深度剖析
目录一、结构体1.1结构的概念1.2结构的声明1.3 特殊的声明1.4 结构的自引用1.5 结构体变量的定义和初始化1.6 结构体内存对齐例题一例题二例题三1.7 修改默认对齐数1.8 结构体传参二、位段2.1 什么是位段2.2 位段的内存分配2.3 位段的跨平台问题三、枚举3.1 枚举类型的定义3.2 枚举的优点四. 联合(共用体)4.1 联合类型的定义4.2 联合的特点4.3 联合大小的计算常见的自定义类型(构造类型)都有:结构体、枚举、联合体,接下来我们一个一个来看,首先,我们先看结构体:一、原创 2021-09-18 20:41:19 · 342 阅读 · 24 评论 -
C语言中常见字符串库函数的模拟实现(超详细)
本文主要介绍一些常用的字符串库函数的模拟实现,首先,我们来看一下都有哪些函数:字符串说明字符串类型求字符串长度strlen长度不受限制的字符串函数strcpy、strcat、strcmp长度受限制的字符串函数strncpy、strncat、strncmp字符串查找strstr、strtok错误信息报告strerror内存操作函数memcpy、memmove、memset、memcmp接下来,我们就一个一个来进行分析,并模拟实现。在这里,原创 2021-09-15 18:08:59 · 526 阅读 · 16 评论 -
关于指针的一些经典例题详解
指针学完之后,对指针是否深刻理解,以下是一些关于指针的经典例题,通过例题可以回顾一下指针的相关内容:代码示例1:int main(){int a[5] = { 1, 2, 3, 4, 5 };int *ptr = (int *)(&a + 1);printf( "%d,%d", *(a + 1), *(ptr - 1));//2,5return 0;}代码详解1:首先,&a表示的是整个数组的地址,其类型是int*[5],(&a+1)表示跳过整个数组的地址,(in原创 2021-09-12 00:31:10 · 1453 阅读 · 17 评论 -
从例题中深入理解数组名的含义
首先,我们先要了解数组名的意义:数组名的意义:sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。除此之外所有的数组名都表示首元素的地址在此再说明一点:strlen-是库函数,求的是字符串长度sizeof-是操作符,单位是字节,是求变量所占空间的大小,或者是求类型创建的变量所占空间的大小。首先来看一维数组:#include <stdio.h> int main(){ int a[]原创 2021-09-03 14:43:51 · 362 阅读 · 7 评论 -
用递归和非递归(图解)两种方式实现字符串的逆序
注意:这里是将参数字符串中的字符反向排列,不是逆序打印。首先,用的是非递归的方法:#include <stdio.h>#include <string.h>void reverse_string(char * str){ int left = 0; int right = strlen(str) - 1; while (left <= right) { char temp = str[left]; str[left] = str[right];原创 2021-08-17 21:15:25 · 433 阅读 · 1 评论 -
深度剖析数据(整形、浮点型)在内存中的存储
1.数据的类型介绍我们在C语言的初级阶段已经了解到数据基本的内置类型都有:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数 //注意:C语言是没有字符串类型的数据类型的意义是:使用这个类型开辟内存空间的大小(大小决定了使用范围)。如何看待内存空间的视角。1.1 类型的基本归类:整形家族:charunsigned charsigned cha原创 2021-08-13 17:39:24 · 286 阅读 · 2 评论 -
一张图带你深入理解函数栈帧的创建与销毁
当我们在刚开始接触C语言的时候,都会有很多困惑,比如说局部变量是怎么创建的?为什么局部变量的只是随机的?函数是怎么传参的?传参的顺序又是怎么样的?形参和实参是什么关系?函数调用是怎么做的?函数调用结束后又是怎么返回的?......等等问题。 其实,这些问题都与函数栈帧的创建与销毁有关,我们理解了函数栈帧的创建与销毁也就明白了上述的问题。原创 2021-08-06 20:01:46 · 195 阅读 · 2 评论 -
C语言写一个函数,可以逆序一个字符串的内容。
void reverse(char* ps){ if (ps == NULL) { return ; } char *head =ps; char *end = ps + strlen(ps) - 1; while (head < end) { char temp = *head; *head = *end; *end = temp; head++; end--; }}int main(){ char s[] = "helloWorld"; p原创 2021-08-02 18:30:09 · 318 阅读 · 0 评论 -
求两个数的最大公约数与最小公倍数之和
最小公倍数等于两数之和除以最大公约数#include <stdio.h>#define MAX (m > n) ? n : m;;#define MIN (m > n) ? m : n;int main(){ int m, n,a,b,c=0; scanf("%d %d", &m, &n); a = MAX(m, n); b = MIN(m, n); //求最大公约数b while (c=a%b) { a = b; b原创 2021-07-31 08:59:38 · 477 阅读 · 0 评论 -
用C语言实现将数组A中的内容和数组B中的内容进行交换。(数组一样大)
void exchange(int a[], int b[], int sz){ int i = 0; for ( i = 0; i <sz; i++) { int temp = a[i]; a[i] = b[i]; b[i] = temp; } for ( i = 0; i < sz; i++) { printf("%d ", a[i]); } printf("\n"); for (i = 0; i < sz; i++) { printf(原创 2021-07-30 15:24:59 · 181 阅读 · 0 评论