
C语言
文章平均质量分 93
本专栏主要介绍C语言的知识
白日一万里
分享所学内容,方便复习。后面不写了,太耗时间了。
展开
-
C语言编译和链接
(1).#define定义常量😎定义方法。原创 2024-04-11 23:55:05 · 1327 阅读 · 0 评论 -
C语言文件操作2
频繁的写入就会使得计算机的效率变低,此时就有了缓冲区的概念,数据先不直接磁盘/内存上,而是先放到缓冲区上,当缓冲区的数据被写满之后,再刷新到目标空间上,这就减少频繁的;当内存中的数据发生改变时,硬盘中的数据也必须跟着改变,如果内存中的数据频繁改变,磁盘中的数据也要跟着频繁的变,那么结果就是内存和磁盘频繁打交道。fread函数不同于前面的字符、文本读取函数,该函数读取是原始的方式(字节的读取,二进制的读取),指定大小的读取,并非一个字节的字符,一整串字符的读取。成功返回成功写入的字符的个数;原创 2024-04-09 20:33:53 · 891 阅读 · 4 评论 -
C语言文件操作1
文件名,接收文件名的起始地址,文件名可以包含文件路径。文件的打开方式,函数会提供一些方式,接收的是对应方式名字的地址。FILE*返回类型为该文件的文件指针,失败返回NULL。名称作用文件不存在时'r'read,只能向文件读取数据,只读打开失败,报错'w'创建新的文件,如有已存在的同名文件,同名文件的数据被丢弃,新的文件替换原来的文件。只能向文件写入数据,只写。创建新文件,成功打开'a'append,只能向文件的末尾附加数据打开失败,报错'r+'向文件读取数据或写入数据,读写打开失败,报错。原创 2024-04-07 20:22:47 · 899 阅读 · 2 评论 -
C语言动态内存管理
创建后不可改变大小的,比如使用int类型创建变量,创建数组,他们的大小在使用前就已经规定好了,但是!!!有些内存空间大小只有等到我们要使用的时候才能确定大小,这时官方就引入动态内存来达到每个程序员都能自己设置内存大小的目的。⚁内存分区前面我们学习的变量有全局变量,静态变量(static修饰),局部变量,函数形参,const修饰的变量,原创 2024-03-27 10:59:35 · 1103 阅读 · 0 评论 -
C语言自定义类型联合体和枚举
联合体又称共用体,和结构体类似作用都是将不同类型的变量进行集成,从而得到一个新的类型变量,不同的地方就在存储方式上,结构体是为所有类型数据都分配空间,而联合体所有类型数据共用一块空间,且空间的大小为这些类型中所占空间最大类型的大小。⚁。原创 2024-03-24 16:20:54 · 738 阅读 · 0 评论 -
C语言自定义类型结构体
比如:对于一个学生而言,学生的属性就有他的名字,性别,年级,成绩等等,为了将这些属性都存储在一起,这时就需要新的自定义类型来进行将不同类型的数据进行整合,这就是结构体类型。综上所述,结构体的内存对齐是计算机编程中的一个重要概念,它关系到程序的性能、硬件兼容性以及代码的可维护性。对于这种没有将结构体类型名的结构体,就意味着不能通过结构体类型来创建结构体变量,这种只能使用它后面的结构体变量,可以称为一次性结构体。这种在声明结构体时不声明结构体类型名,而在声明后接着创建结构体变量的操作就称为结构体的匿名声明。原创 2024-03-22 23:00:01 · 1082 阅读 · 0 评论 -
C语言数据在内存中的存储
大端字节序存储是指将数据的低位存储在高地址处,而将数据的高位存储在低地址处。大端字节序大端字节序存储是指将数据的低位存储在低地址处,而将数据的高位存储在高地址处。小端字节序。原创 2024-03-20 21:47:08 · 961 阅读 · 0 评论 -
C语言内存函数
目标空间的地址,目标空间数据类型位置,使得指针类型未知,故而都使用void*类型适用任何类型数据。const void * source 源空间的地址,只对源空间的数据做拷贝不做修改,故constvoid* 返回void*类型的地址是由于目标空间的指针类型未知。size_t num 无符号类型的num,拷贝字节的大小/数量。原创 2024-03-18 19:37:59 · 865 阅读 · 0 评论 -
C语言字符串函数strstr、strtok和strerror
str1字符串1的首字符的指针。str2字符串2的首字符的指针。const修饰是因为只用于查找,不做修改,防止写错误代码。str需要被切割的字符串的首地址,如果是第一次被切割则为字符串的首地址,如果不是第一次则是NULL空地址(函数会在切割后保留切割符出现的地址)。delimiters是分隔符/切割符,可以是单个分割符的地址,也可以是分割符集合(字符串)的首地址。如果存在分隔符,则函数返回切割后字符的首地址,如果不存在,则返回空指针NULL。此函数在切割个同意字符串时,原创 2024-03-17 16:09:14 · 954 阅读 · 0 评论 -
C语言字符函数和字符串函数
都是将字符转原创 2024-03-16 20:35:19 · 1271 阅读 · 1 评论 -
每日一题-数组与指针
先加加在使用,那就是数组cp第二个元素的地址,解引用一次就是第二个元素,存的是字符串"POINT"的首地址,打印的就是POINT。*cpp[-2] + 3==*(*(cpp-2))+3,经过上两轮cpp已经自加两次了,此时cpp是指针数组cp第三个元素的地址。指针数组c的第四个元素的值是"FIRST"首字符的地址,+3就是"FIRST"中第四个字符的地址,最后打印的就是"ST"cp的第一个元素的值是c+3,就是指针数组c第4个元素的地址,那么*(*(cpp-2))就是指针数组c中的第四个元素。原创 2024-03-13 23:49:08 · 786 阅读 · 2 评论 -
C语言sizeof操作符与strlen函数
计算变量的内存空间大小。底层实际上是对变量类型的计算。是一个单目操作符,不是函数,后面的括号可以省略。原创 2024-03-12 19:53:36 · 1178 阅读 · 0 评论 -
C语言qsort函数的模拟实现
void* base, //void*指针可以存放各种类型指针,指向需要排序数组首元素的地址size_t num, //数组元素的个数num,数组元素大于0,所以是size_t无符号类型;通常计算数组大小是使用sizeof(数组的地址)/sizeof(数组元素大小),但是这里只有数组首元素的地址,所以必须告诉qsort函数数组大小size_t size,//数组元素的大小size(单位:字节),在排序时需要找到两个元素进行比较,有了元素的大小,就知道指针一次要访问多少个字节,就能准确找到元素。原创 2024-03-11 07:00:00 · 1078 阅读 · 0 评论 -
C语言函数指针与指针函数
我们知道一级指针+1,就是跳过1次读取,是地址加上指针所指向类型的字节数,那么对于二级指针+1,就是地址加上二级指针所指向的类型的字节数,也就是是一级指针的字节数,而一级指针的字节在x64环境下是8个,x86环境下是4个,所以二级指针+1就是地址+4/8。分析:这里test函数就是一个回调函数,它是被使用函数指针ptest来调用的,test函数的指针传给menu函数,在menu函数类似一个特定条件,在menu函数下使用指针调用test函数打印。指针函数是个函数,这个函数的返回类型是指针。原创 2024-03-10 07:00:00 · 1004 阅读 · 1 评论 -
C语言数组指针与指针数组
注意:指针都只能存一个内存单元的地址,而不同类型的指针就导致指针具有不同的访问性质,例如这个数组指针,他所指向的类型是数组,就意味着他一次要访问完数组元素的首地址,那么它一次读取的就是整个数组的字节数,而对于整形指针来说,当他存下数组的首元素地址,它所指向的是整形变量,但他的访问质就是一次读取4个字节,读取一个元素。而p3,p4是存的字符数组的首字符的的地址,数组是一个变量,为他开辟空间是栈区上开辟的,这是两个不同的数组,自然空间不同,p3和p4的指针所存的地址自然不同。,让编译器识别为指针的创建;原创 2024-03-09 11:49:22 · 1316 阅读 · 0 评论 -
C语言指针基本知识
const修饰的变量变成“常量”,这个不是真正意义上的常量,只是具有常属性的常量。如果const在*p的左边修饰,那么*p(解引用p==变量)(*p具有常属性) 不能被修改,p(p==地址)的值能修改。原创 2024-03-05 23:04:38 · 826 阅读 · 1 评论 -
C语言函数基础知识
库函数只是一些我们会经常用到函数,不可能你想要一个什么功能的函数就能在库函数里面找到,所以就需要我们自己敲代码来创建函数,这就是自定义函数。ret_type 函数的返回类型(return_type)fun_name 函数名称(function)para1,para2,* 函数的形式参数(parameter1,parameter2,......)" 表示声明语句的结束注意:函数的声明,形参的类型必须写,形参的名字可写可不写见上面3.函数的创建。原创 2024-03-02 21:30:25 · 919 阅读 · 1 评论 -
C语言数组基本知识
数组就是指一群元素的集合一种相同类型元素的集合称为数组,如字符数组,整形数组等。原创 2024-02-27 15:44:16 · 388 阅读 · 1 评论