
C
文章平均质量分 69
喜欢打篮球的普通人
这个作者很懒,什么都没留下…
展开
-
函数接收可变参数
简介stdarg 由 standard argument 简化而来,该头文件的主要目的为让函数能够接受可变参数。该头文件中声明了一个类型 va_list 和三个宏函数 va_start,va_arg 和 va_end。数据类型(Types):宏函数(Macro functions):eg:测试:2.##__VA_ARGS__的使用#:测试:##:用于将带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串;但它不可以是第一个或者最后一个子串。所谓的子串(tok原创 2022-07-07 22:24:28 · 1105 阅读 · 0 评论 -
C语言printf输出整型格式符简单总结
32位编译器:64位编译器:原创 2022-06-08 10:46:21 · 1717 阅读 · 0 评论 -
C语言结构体指针强转
文章目录1.结构体指针强转2.结构体指针强转在链表中的使用3.1.结构体指针强转C语言中结构体无法进行强转,但是结构体指针是可以进行间接强转的eg:先定义4个结构体typedef struct { int array[4];}Struct_A;typedef struct { int *ptr_b;} Struct_B;typedef struct { int int1; int int_array1[2]; float float_arra原创 2022-02-07 15:34:19 · 8855 阅读 · 0 评论 -
C语言实现静态和动态多态
文章目录1.C语言实现静态多态2.C语言实现动态多态1.C语言实现静态多态C++静态多态性是通过函数重载实现的C++中的函数重载和运算符重载实现的多态性就属于静态多态,在程序编译时系统就能决定调用的是哪个函数,因此静态多态性又称为编译时多态性。eg:C语言实现编译时多态性对于不同的类型的A和B,带参数的宏 ADD 会根据传入的是 int类型或是string 类型而采取不同的 +的策略。#define ADD(A, B) (A) + (B);int main(){ int转载 2022-01-08 11:38:07 · 441 阅读 · 0 评论 -
C语言使用const定义数组时的错误原因
文章目录在c语言编程中我们这样定义数组时编译器回报一个错误const int n=5; int ar[n];这确实是一个很棘手的问题,它会迫使我们用动态开辟空间的方法来定义数组,但是我们使用动态开辟的方法比较复杂,容易出现错误。所以我们需要解决这个问题。为什么会出现上面原因呢?(在c++中是可以的)主要原因是:1.这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的,例如数字5, 字符串“abc”等,肯定是只读的,因为程序中根本没有地方存放它的值,当然也就不能够去转载 2021-05-11 15:36:45 · 2351 阅读 · 1 评论 -
(P49)基础typedef:实质就是给类型起别名,高级typedef
文章目录1.21.typedef是C中最重要的关键字之一typedef与define的区别(1)typedef基本功能 给数据类型(包括结构体)起别名typedef A B;//给A取别名Btypedef A B,C;//给A取别名B/C。可以取多个别名define也可以 #define B A区别define是直接替换typedef是对类型的封装。真正的起别名。可以对指针类型取别名。//哪个变量要变成指针,就在它前面加上*号#include <stdio.h>ty原创 2020-12-13 22:16:40 · 312 阅读 · 0 评论 -
结构体里面的字符数组和字符指针该怎么赋值?
文章目录1.C语言 结构体指针赋值 incompatible types when assigning to type 'char[20]' from type 'char *'1.C语言 结构体指针赋值 incompatible types when assigning to type ‘char[20]’ from type ‘char *’strcpy(pstudent->na...转载 2020-03-03 08:55:48 · 1359 阅读 · 0 评论 -
(第17章)经典抽象数据类型
文章目录1.内存分配2.堆栈1.内存分配ADT:抽象数据类型所有的ADT都必须确定一件事:如何获取内存来存储值,有三个方案:(1)静态数组:长度固定,长度在编译的时候决定(2)动态数组:在运行时,决定数组的长度(3)链式结构:每个元素在需要时才单独进行分配,链式结构的链接字段需要消耗一定的内存,在链式结构中访问一个特定元素的效率不如数组2.堆栈堆栈stack特点:后进先出(L...原创 2019-12-24 09:14:41 · 271 阅读 · 0 评论 -
(第13章)高级指针话题
1.指向指针的指针看eg:int i;int *pi;int **ppi;ppi=π//把ppi初始化为指向变量pi*ppi=&i;//把pi(通过ppi的间接访问)初始化为指向变量i,这里的*ppi指针就是pi指针//变量i是一个整数,pi是一个指向整型的指针,ppi是一个指向pi的指针,所以它是一个指向整型的指针的指针。等价于://按照我下面的写法...原创 2019-12-16 15:07:14 · 258 阅读 · 0 评论 -
(第12章)使用结构和链表
文章目录1.链表2.单链表3.将新节点插入到一个有序的单链表中?1.链表链表中的每个节点通过指针连接在一起,程序通过指针来访问链表中节点通常,节点是动态分配的2.单链表链表的最后一个节点的指针字段的值为NULL,提示链表后面不再有其他节点根指针root pointer:是链表的起始位置,根指针指向链表的第1个节点。注意:根指针只是一个指针,它不包含任何数据。节点声明创建的结构如...原创 2019-12-12 20:34:34 · 256 阅读 · 0 评论 -
(第3章)数据
1.基本数据类型变量的三个属性:作用域,链接性,存储类型。这三个属性决定了一个变量的可视性(可以在什么地方使用)和生命期(他的值将保持多久)。C语言只有4种基本数据类型:整型,浮点型,指针,聚合类型(eg:数组和结构等)。其他的类型都是从这4种基本数据类型的某种组合派生而来的。(1)整型整型家族包括:字符,短整型,整型和长整形,他们都分为有符号signed和无符号unsigne...原创 2019-12-06 09:17:10 · 313 阅读 · 0 评论 -
C语言基础知识积累记录
| | ||目录链接–(第3章)C语言进阶重点、难点与疑点解析https://blog.csdn.net/u011436427/article/details/100970864<参考:C语言进阶重点、难点与疑点解析>––––––《C Primer Plus》学习笔记——第一章初识C语言https://blog.csdn.ne.........原创 2019-12-05 19:53:57 · 324 阅读 · 0 评论 -
可重入和不可重入函数
文章目录1.可重入函数与不可重入函数的特点2.举例说明1.可重入函数与不可重入函数的特点那么什么是可重入函数呢?所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据 是否会出错。不可重入函数在实时系统设计中被视为不安全函数。满足下列条件的函数多数是不可重入的:(1)函数体内使用了静态的数据结构;(静态存储区:全局变量+static类型的变量)(2) 函数体内...原创 2019-12-02 22:50:52 · 585 阅读 · 0 评论 -
(16)内存管理
文章目录1.内存的分配方式2.常见的内存错误及对策3.如果函数的1.内存的分配方式(1)内存的分配方式有三种(a)从静态存储区分配内存在程序编译的时候就已经分配好了,这些内存在程序运行的整个期间都存在。eg:全局变量、static变量等(b)在堆栈上分配在函数执行期间,函数内局部变量(包括形参)的存储单元都创建在堆栈上,函数结束时,这些存储单元会自动释放 (堆栈清退);堆栈内存分配...原创 2019-12-02 15:25:49 · 164 阅读 · 0 评论 -
snprintf和sprintf区别分析
文章目录1.主要区别如下2.参考1.主要区别如下(1)sprintf和snprintf函数的字符串缓冲因为sprintf可能导致缓冲区溢出问题而不被推荐使用,所以在项目中我一直优先选择使用snprintf函数,虽然会稍微麻烦那么一点点。这里就是sprintf和snprintf最主要的区别:snprintf通过提供缓冲区的可用大小传入参数来保证缓冲区的不溢出,如果超出缓冲区大小则进行截断。(...转载 2019-11-09 15:13:24 · 7991 阅读 · 3 评论 -
static作用(修饰函数、局部变量、全局变量)
文章目录一、下面是中兴通讯2012校招笔试题的一道问答题:1.static全局变量与普通的全局变量有什么区别 ?2.static局部变量和普通局部变量有什么区别 ?3.static函数与普通函数有什么区别?二、static的三个作用1.static的内链接2.static变量的持久性(3)static的第三个作用是默认初始化为0一、下面是中兴通讯2012校招笔试题的一道问答题:1.static...原创 2019-09-24 19:23:19 · 206 阅读 · 0 评论 -
(第4章)语句
文章目录四、goto语句的使用及注意事项C语言动态数组的使用四、goto语句的使用及注意事项(1)goto语句也称之为无条件转移语句。goto语句只能在函数内部进行转移,不能跨越函数。goto语句一般的使用格式如下:(2)eg1:goto语句建立循环,下面的代码实现了1到100之间所有整数的累加和(3)eg2:查找一个四位数中的最小的水仙花数(4)eg3:下面的代码的功能为创建...原创 2019-09-18 09:01:02 · 222 阅读 · 0 评论 -
memcpy
1.memcp函数概述memcpy指的是C和C++使用的内存拷贝函数,函数原型为void *memcpy(void *destin, void *source, unsigned n);函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中(1)函数介绍函数原型void *memcpy(void *destin, vo...原创 2019-08-31 16:56:16 · 578 阅读 · 0 评论 -
《C Primer Plus》学习笔记——第十一章字符串和字符串函数
文章目录二、字符串的输入3.gets()的替代品(1)fgets()与gets()的区别(2)空字符和空指针的区别五、字符串函数1.strlen()函数:统计字符串的长度2.strcat()函数:拼接字符串3.strncat()函数:更安全4.strcmp()函数:持续到字符串的尾巴(1)字符串不能比较地址,只能比较字符串的内容(2)不要使用字符或者'a'来作为strcmp()的参数二维数组如何检...原创 2019-07-25 17:42:33 · 329 阅读 · 0 评论 -
(第14章)《C Primer Plus》学习笔记——函数指针
文章目录一、函数指针定义1.函数指针的含义2.函数指针的声明必须要指出函数的返回类型和形参类型(2)void (*pf)(char *) 与void *pf(char *)的区别(3)如何写个函数指针?3.函数名是函数的地址,函数指针如何用函数名4.函数指针的两种写法(前者为主),(*pf)(mis)等价于pf(mis)5.函数指针和数据指针的使用二、重要例子一、函数指针定义1.函数指针的含义...原创 2019-07-05 14:51:43 · 505 阅读 · 0 评论 -
LinuxC语言中函数库glibc简介
(1)要在一个平台上支持C语言,不仅要实现C编译器,还要实现C标准库,但是很多单片机的C语言开发工具中只有C编译器而没有完整的C标准库。(2)...原创 2019-04-22 09:46:41 · 771 阅读 · 2 评论 -
《C Primer Plus》学习笔记——第一章初识C语言
文章目录七、使用C语言的7个步骤1.定义程序的目标2.设计程序3.编写代码4.编译5.运行程序6.测试和调试程序7.维护和修改代码8.说明八、编程机制1.目标代码文件、可执行文件和库(4)windows IDE(PC)的编译和链接过程2.Unix系统(3)UNIX上C程序的编译和链接过程4.Linux操作系统5.PC的命令行编译器6.集成开发环境(Windows)7.Windows/Linux8....原创 2019-03-15 21:33:03 · 347 阅读 · 0 评论 -
C语言实战105例子——实例6用if...else语句解决奖金发放问题
题目:实例解析1.if语句的三种基本形式(1) if (表达式){语句}表达式的值为真时,则执行后面花括号的语句。(当只有一条要执行的语句时,不需要加花括号。)(2) if (表达式){语 句 l} else {语句 2}表达式的值为真时,则执行后面花括号里的语句1 , 否 则, 执 行 else后面花括号里的语句 2。(3) if (表 达 式 1) {语 句 l} else i...原创 2018-10-23 18:42:10 · 2715 阅读 · 0 评论 -
C语言实战105例子——实例5 IP地址解析
说明:用户输入一个十六进制的IP地址后,程序会对该段IP地址解析,然后以常见的分段方式呈现给用户解析:1)〜(〜0&amp;amp;lt;&amp;amp;lt;8)表达式的意思是,〜0 的所有位都为1 , 这里使用语句〜0&amp;amp;lt;&amp;amp;lt;n将〜0 左移n位,并将最右边的n位用0填补。再使用〜运算对它按位取反,这祥就建立了最右边n位全为1 的屏蔽码。2)...原创 2018-10-18 22:21:31 · 589 阅读 · 0 评论 -
C语言实战105例子——实例4逻辑运算符计算器
解析:使用逻辑运算符& & 和II的时候注意一些较为特殊的属性。由& & 和II连接的表达式按从左到右的顺序进行求值,并且,在知道结果值为真或为假后立即停止计算。eg:#include <stdio.h> #include <math.h>#include<stdlib.h>int main(){ int x ...原创 2018-10-18 20:45:33 · 907 阅读 · 0 评论 -
C语言实战105例子——实例3 算数运算符操作符
当一个运算符的几个操作数类型不同时,需要通过一些规则把它们转化为某种相同类型。一般来说,自动转换是指把**“比较窄的”操作数转换为比较宽的操作数**。C语言的算术运算符的优先级(从高到低)与结合性注:同一行中的各运算符具有相同的优先级,各行间从上往下优先级遂行降低eg:#include <stdio.h>#include<stdlib.h>int main(...原创 2018-10-18 20:18:37 · 616 阅读 · 0 评论 -
C语言实战105例子——实例2 灵活使用递增(递减)操作符
解析:1)前置运算:++i、- -i,这种方式的运算规则是,先使变量的值增(或减)1 , 然后再以变化后的值参与其他运算。2)后置运算:i++,i–,这种方式的运算规则是变量先参与其他运算,然后再使变量的值增(或减)1。例子#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#define BUFFERSIZE 1024 /*允许处理的最长行...原创 2018-10-16 17:10:39 · 659 阅读 · 0 评论 -
C语言实战105例子——实例1 一个价值“三天”的bug
1111原创 2018-10-15 22:21:46 · 3361 阅读 · 0 评论 -
关于C语言的一些大佬的读书笔记
https://github.com/qyuhen/book尤其是关于C语言的,有空了就要去看https://github.com/qyuhen/book/blob/master/C 学习笔记.pdf转载 2018-09-28 22:00:09 · 397 阅读 · 0 评论 -
volatile修饰符
参考学习:《C语言进阶重点、难点与疑点分析》嵌入式程序员必须掌握volatile的使用1.每次定义到这个变量的时候,都必须从内存中直接读取这个变量的值,而不是使用保存在寄存器中备份。...原创 2018-09-15 23:38:11 · 243 阅读 · 0 评论 -
C语言中的字符串分割函数strtok的使用
参考的bolg:strtokhttps://blog.csdn.net/huhaoxuan2010/article/details/76034310strtok()函数详解!https://blog.csdn.net/weibo1230123/article/details/80177898 1.头文件:<cstring>或者<string.h>...原创 2018-09-06 23:08:38 · 1384 阅读 · 0 评论 -
三种获得字符串的方法的区别:scanf gets getchar
三种获得字符串的方法的区别:scanf gets getchar1)使用scanf("%s",&s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束2)gets()函数将接收输入的整个字符串直到遇到换行为止 char src[100];gets(src); 上述的两者在接受字符串时: a.不同点: scanf不能接受空格、制...原创 2018-09-05 23:06:31 · 565 阅读 · 0 评论 -
关于函数指针的一道题目——写的比较少,所以单独列出来
来自《程序员面试宝典第五版欧立奇》函数指针的相关说明原创 2018-08-29 10:04:36 · 306 阅读 · 0 评论 -
内联函数和宏定义的差别
来自《程序员面试宝典第五版欧立奇》我画的黄色字体是重点需要理解的,其它的看看就好原创 2018-08-28 17:27:45 · 165 阅读 · 0 评论 -
memcpy的用法总结
参考:https://blog.csdn.net/qq_35040828/article/details/71123521原创 2018-08-28 11:42:07 · 368 阅读 · 0 评论 -
sizeof与strlen的区别
来自《程序员面试宝典第五版欧立奇》1.首先是例子(太典型了)2.接下来是具体的差别,总共11条sizeof是类型占内存的大小,是最大类型对象的字节大小;strlen是计算字符串的长度fun(unsiged char *p1,int len){ unsiged char *buf=new unsiged char [len+1]; memcpy...原创 2018-08-28 11:40:01 · 347 阅读 · 0 评论 -
const与define的区别
来自《程序员面试宝典第五版欧立奇》const操作大回顾int b=500;const int *a=&b;//情况1int const *a=&b;//情况2int *const a=&b;//情况3const int * const a=&b;//情况4//对于情况1和2*a都是常量,a是变量可以改变改变方法1)int b=500...原创 2018-08-28 11:18:41 · 1112 阅读 · 0 评论 -
C语言的动态数组 VS C++的动态数组
C语言中的动态数组C语言中的动态数组就是动态内存分配的知识首先,先看C语言的那些小秘密之动态数组https://blog.csdn.net/bigloomy/article/details/6615012,里面有关内存分配的内容,请看C语言的那些小秘密之内存分配https://blog.csdn.net/bigloomy/article/details/6581706,如果对其中的real...原创 2018-08-26 19:37:09 · 4974 阅读 · 2 评论 -
sizeof总结——很全面的sizeof用法结果
注意struct里面的字节对齐以及下方的数据对齐的概念 结构体字节对齐下面的解释就很骚了首先是硬件电路的解释从软件方面的编译器来看, 举例子,两种比较典型的eg求一下: 但是也有例外,还有禁止对齐调整的用处:1)结构体需要被直接写入文件2)这个结构需要通过网络传给其它程序...原创 2018-08-24 16:37:11 · 1134 阅读 · 0 评论 -
C 语言常见的简单知识点
原内容在:https://download.csdn.net/download/u011436427/10607465里面是有一些错误的!但是我下面总结的东西,没错误!下面的内容,我只总结我需要的:1.编译预处理 不是 CC 语言的一部分, 不占 运行时间, 不要加 分号。 C 语言编译的程序称为 源程序 ,它以 ASCII 数值 存放在 文本文件2.C 语言只有 八、十、十六 ...原创 2018-08-16 15:37:48 · 288 阅读 · 0 评论