C语言
文章平均质量分 85
关于C语言内容
星鸦wyk
这个作者很懒,什么都没留下…
展开
-
程序的环境和预处理
上一篇博客已经了解过文件的操作,这篇主要解决一个问题:我们在用C语言写代码的时候,建立的是后缀为.c的源文件,而windows环境下可执行程序的后缀是.exe,从代码到可执行程序,这中间经过了哪些步骤目录1.程序的环境1.1翻译环境1.1.1预处理1.1.2编译1.1.3汇编1.1.4链接1.2执行环境2.预处理详解2.1预定义符号2.2#define2.3条件编译2.4#include<>和#include""的区别1.程序的环境原创 2022-02-27 20:22:05 · 415 阅读 · 2 评论 -
文件的操作
我们知道程序中的数据是在内存中进行存储的,当程序关闭的时候,这些数据也就被销毁,而在某些情况下我们可能需要将数据记录下来,那么此时数据就需要存储在文件中,关于文件,内容如下:目录1.什么是文件2.文件的分类3.文件的打开和关闭3.1文件名3.2文件指针3.3打开文件3.4关闭文件4.文件读写4.1流4.2文件顺序读写4.2.1 fgetc/fputc4.2.2 fgets/fputs4.2.3 fscanf/fprintf4.2.4 fread/f原创 2022-02-22 22:00:29 · 441 阅读 · 8 评论 -
动态内存管理
在开始介绍动态内存管理之前首先来讲讲为什么会有动态内存1.动态内存存在的原因一句话概括:为了更有效的使用内存空间我们可以回想一下之前是如何在内存中开辟空间的,创建变量或数组,但二者开辟的空间是固定的,所以难免会出现空间不够或是空间过大的情况,而动态内存管理就是为了解决这种问题2.动态内存分配在内存上有三个区,分别是栈区、堆区和静态区如图:下面要介绍的动态内存函数就是在堆区上开辟空间3.动态内存函数3.1malloc...原创 2022-01-27 18:38:32 · 1057 阅读 · 9 评论 -
C语言实现通讯录
之前介绍了结构体,这次用结构体来实现一个通讯录通讯录的功能如下:1.通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址2.可以对联系人的信息进行增删改查的操作,以及显示所有联系人的信息3.可以对联系人进行排序(以名字进行排序)还是和之前写过的井字棋和扫雷的小游戏一样,依旧是有三个文件,contact.h声明函数,contact.c实现函数,test.c进行测试,那就开始吧目录1.创建菜单2.添加联系人3.查找联系人4.显示所有联系原创 2022-01-25 17:18:58 · 3667 阅读 · 7 评论 -
C语言自定义类型
之前的博客中有介绍过关于结构体的内容,但介绍的并不详细,这篇在其基础上更加详细的介绍结构体和其它的自定义类型1.结构体之前已经介绍过结构体的定义、声明和使用,在这就直接跳过。原文链接:C语言结构体_鹰不泊wyk的博客-CSDN博客1.1结构体特殊声明结构体在声明的时候可以不完全声明:struct{int a;char b;float c;}x; //但变量只能在这里定义,而且这个结构体只能使用一次,指针也无法指向这个结构体这种结构体类型就是匿名结构体1.2结构体引用原创 2022-01-24 16:14:22 · 685 阅读 · 3 评论 -
内存函数及其模拟实现
上一篇介绍了字符串函数,并对一些函数进行了模拟实现了。但这些函数也只能对字符串进行操作,如果想对int型数组或者其他数据进行类似操作怎么办?这篇介绍的内存函数就能实现,同样的,也会对一些函数进行模拟实现目录1.memcpy1.1函数介绍1.2memcpy函数模拟实现2.memmove2.1函数介绍2.2memmove函数模拟实现3.memcmp3.1函数介绍3.2memcmp函数模拟实现1.memcpy1.1函数介绍内存拷贝从src位置开始向后的c原创 2022-01-23 19:18:29 · 484 阅读 · 9 评论 -
字符串函数
主要对C语言中常用的函数进行归纳和模拟实现目录1.strlen1.1函数介绍1.2strlen函数模拟实现2.strcpy2.1函数介绍2.2strcpy函数模拟实现3.strcat3.1函数介绍3.2strcat函数模拟实现4.strcmp4.1函数介绍4.2strcmp函数模拟实现5.strstr5.1函数介绍5.2strstr函数模拟实现1.strlen1.1函数介绍关于strlen函数相信都不陌生,strlen函数是用来求字原创 2022-01-22 22:09:50 · 426 阅读 · 4 评论 -
指针知多少(指针进阶习题讲解:指针篇)
上一篇的题目不知感觉如何,感觉良好的话,就进入下面的内容注:这次的题目会更难那就开始吧1.int main(){ int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int *)(&a + 1); printf( "%d,%d", *(a + 1), *(ptr - 1)); return 0;}问上述代码的结果是什么还是逐个来分析数组名是首元素的地址+1后解引用就是a[1]&a是取出整个原创 2022-01-22 19:29:00 · 961 阅读 · 1 评论 -
指针知多少(指针进阶习题讲解:数组篇)
指针进阶的内容基本介绍完毕,如果你自我感觉不错,没有对里面的内容感到迷惑的话,那么我们就开始下面的内容目录1.一维数组1.1int型1.2字符串2.二维数组1.一维数组1.1int型首先看下面的代码:int a[] = {1,2,3,4};printf("%d\n",sizeof(a));printf("%d\n",sizeof(a+0));printf("%d\n",sizeof(*a));printf("%d\n",sizeof(a+1));printf(原创 2022-01-21 17:08:32 · 938 阅读 · 10 评论 -
qsort函数的使用和模拟实现
这篇博客通过介绍qsort函数来说明函数指针的应用目录1.回调函数的定义2.qsort函数介绍3.qsort函数使用4.qsort函数模拟实现(冒泡排序)1.回调函数的定义在开始之前还需要介绍一个概念:回调函数回调函数就是通过函数指针调用的函数假设有一个函数,函数中有一个参数是函数指针,当函数指针调用其所指向函数的时候,我们称这就是回调函数上述定义看完可能会觉得莫名其妙,函数是可以进行嵌套调用的,调用函数的话直接写函数名即可,为什么要多此一举用函数指针进行调用,.原创 2022-01-20 19:09:11 · 582 阅读 · 6 评论 -
指针知多少(指针进阶:贰)
接着上一次的内容继续目录1.数组指针1.1数组指针的创建和初始化1.2数组指针的使用1.2.1一维数组1.2.2二维数组2.函数中数组和指针的传参2.1数组2.1.1一维数组2.1.2指针数组2.1.3二维数组2.2指针2.2.1一级指针2.2.2二级指针3.函数指针3.1函数指针创建和初始化4.函数指针数组4.1函数指针数组的创建和初始化1.数组指针数组指针的本质是指针,指针指向的数据是数组,数组指针和指针数组两个名称比较接.原创 2022-01-19 22:27:58 · 563 阅读 · 7 评论 -
指针知多少(指针进阶:壹)
关于指针之前在初阶中有过介绍,这次在其基础上进一步加深对指针的理解,关于指针的基本概念就不再进行介绍,可以去看我之前的指针初阶的博客,指针初阶博客链接C语言指针(初阶)_鹰不泊wyk的博客-CSDN博客目录1.字符指针1.1接收字符串1.2字符指针注意事项2.指针数组2.1指针数组的创建2.2指针数组的输出1.字符指针1.1接收字符串字符指针除了可以用于接收字符外,它还可以用来接收字符串,具体操作如下:char*p="mark";p中存储的是首字母m的地址,原创 2022-01-18 11:40:36 · 769 阅读 · 3 评论 -
C语言内置数据在内存中的存储
之前介绍过C语言内置的数据类型,这里重点介绍在内存中这些数据类型是如何存储的目录1.整形的存储1.1原码、反码、补码1.2大小端2.浮点数2.1S、M、E的存储细节1.整形的存储1.1原码、反码、补码char、short、int、long 和long long,不管是有符号还是无符号,它们在内存中存储的二进制表示有3种表示形式,即原码、反码和补码整形在内存中以补码的形式存储,打印的时候以原码的形式打印非负整数的原码、反码和补码是相同的,负整数的原码符号位不变,原创 2021-11-26 18:11:47 · 661 阅读 · 6 评论 -
图解函数栈帧的创建和销毁全过程
这篇博客主要是对局部变量以及函数的一些问题的解答局部变量是如何创建的? 局部变量在没有初始化时是随机值,背后原理是什么? 为什么说形参是实参的临时拷贝? 函数是如何调用函数的? 局部变量出函数就会销毁,那么函数返回的值是如何传递到main函数中的?上述问题在函数的栈帧创建到销毁的过程中可以找到答案注:不同的编译器此过程会有差异以下列代码为例:int Add(int x,int y){ int z=x+y; return z;}int main(){原创 2021-11-25 18:10:34 · 450 阅读 · 2 评论 -
C语言结构体
目录1.结构体的定义2.结构体的使用2.1结构体声明2.2结构体定义及初始化2.3结构体成员的访问3.结构体传参1.结构体的定义结构体就是一些值的集合,这些值称为结构体的成员变量,和数组不同的是,结构体的成员变量数据类型可以相异之所以有结构体是因为某些复杂的事物无法用单一的数据类型来描述2.结构体的使用2.1结构体声明假设用结构体来描述一本书,声明如下struct book //结构体的声明离不开关键字struct{ char nam原创 2021-11-20 16:42:58 · 779 阅读 · 1 评论 -
C语言指针(初阶)
C语言指针的内容比较多,同时也比较难,打算将指针的内容分成两部分,指针中比较容易的内容放在初阶,指针高阶的内容后续会出目录1.什么是指针?1.1地址的产生2.指针的类型3.野指针3.1野指针成因3.2规避野指针4.指针运算4.1指针+/-整数4.2指针-指针4.3指针关系运算5.二级指针6.指针数组1.什么是指针?这个在之前博客中有过介绍,这里再重复一遍,顺便水一下博客字数指针就是地址,我们口头说的指针通常指的是指针变量。关于地址那就需要.原创 2021-11-18 22:30:55 · 470 阅读 · 5 评论 -
C语言操作符详解
关于操作符之前简单介绍过一点,这篇详细介绍C语言中的操作符的使用和一些细节目录1.算数操作符2.移位操作符2.1移位操作符基础2.2移位操作符移动3.位操作符4.赋值操作符5.单目操作符6.关系操作符7.逻辑操作符8.条件操作符9.逗号表达式10.结构成员访问操作符11.操作符的属性12.表达式的求值12.1整型提升12.2算数转换1.算数操作符包括四则运算(+、-、*、/)和取模操作符(%)算数操作符中需要注意的有一下几点:原创 2021-11-15 17:07:03 · 382 阅读 · 4 评论 -
C语言中的数组
1.数组的定义数组就是一组相同类型的元素的集合,数组按照数据类型分有整数,字符串等类型,按照维度分有一维数组、二维数组等,二维以上的数组应用比较少就不做介绍,重点介绍一维和二维数组2.一维数组2.1一维数组的创建int arr[10]int是数组的类型,arr是数组的名称,[10]表示这个数组最多可以存放10个元素关于“[]”内数字需要说明,在C99标准之前“[]”内只能使用常量,直到C99标准中增加变长数组,才可以使用变量,如果编译器不支持C99的话,那下面的写法就不允许i原创 2021-11-07 22:12:24 · 6170 阅读 · 2 评论 -
函数(下)
这篇重点介绍函数递归目录函数递归定义递归的必要条件递归案例函数递归定义首先,程序调用自身的编程技巧称为递归。那么函数递归就是函数在定义时调用函数自身的方法,递就是传递,归就是回归。递归的基本思想就是把规模大的问题转化为规模小的相似的子问题来解决。特别地,在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。举个例子:你在地铁站排队买票,排在你前面的人很多,你想知道你前面还有多少人,于是你问你前面的人是第几位,前面的人不知道,于是问原创 2021-11-06 13:46:54 · 102 阅读 · 2 评论 -
函数(上)
函数打算分上下两篇来介绍,函数(下)主要介绍函数递归目录函数定义函数分类自定义函数函数组成函数的定义和声明函数的参数函数的调用函数嵌套调用和链式访问结尾函数定义函数是什么?C语言中的函数和数学上的函数有所不同,维基百科中对函数的定义为子程序。子程序是程序中的部分代码,负责完成特定的任务,子程序相较于其它代码具有相对的独立性函数分类函数整体上课分为两类:库函数和自定义函数库函数由C语言或系统提供,这些函数实现了一些基本功能像strlen、scan原创 2021-11-03 19:08:26 · 114 阅读 · 0 评论 -
C语言中的分支和循环语句
本篇文章主要讲述分支和循环语句的重点内容以及一些需要注意的细节目录分支语句if语句if语句的语法结构:if语句使用的细节switch语句switch语句语法结构循环语句while循环while循环语法结构for循环for循环语法结构do...while循环do...while循环的语法结构break和continue在循环语句中的应用结尾分支语句分支语句有if语句和switch语句if语句if语句的语法结构:单分支情原创 2021-10-27 20:48:05 · 163 阅读 · 1 评论 -
初探C语言(三)
这篇重点是介绍指针,同时也是C语言学习的重点。另外尽量对之前遗漏的一些 内容进行补充指针首先我们口头上说的指针一般是指针变量,而要说明指针变量则需要从内存开始内存内存是计算机的存储器,作用是暂时存放CPU运行时的数据。为了更加有效地使用内存,就将内存划分成多个小单元,一个小单元的大小为1个字节。那如何对这些小单元进行访问?答案是给每一个小单元进行编号,通过编号进行访问,这些编号又称为这些内存单元的地址。指针变量就是用于存放地址的变量取地址符之前介绍操作符时有介绍取地址原创 2021-10-24 20:56:53 · 169 阅读 · 1 评论 -
初探C语言(二)
上一篇写到了转义字符,这一篇接着往下目录选择语句循环语句数组创建数组访问数组操作符算数操作符移位操作符位操作符赋值操作符逻辑操作符单目操作符选择语句用于分类的情况,比如你的考试成绩,低于60不及格,60及以上及格一般使用if语句实现if语句的语法if(条件1){语句1;}else if(条件2){语句2;}else{ 语句3;}满足...原创 2021-10-22 21:16:45 · 225 阅读 · 1 评论 -
初探C语言(一)
文笔有限,不足之处欢迎补充和改正原创 2021-10-21 15:50:03 · 357 阅读 · 0 评论