C
文章平均质量分 84
worthsen
Just do it!
展开
-
Unix/C/C++--数据类型转换、格式化、cpy、精度
Unix/C/C++--数据类型转换1 简介2 等号赋值与memcpy3 各类转换3.1 unsigned char 2 float3.1 unsigned char 2 string4 指针传递4.1 数组指针4.1.1 示例一4.1.2 示例二参考1 简介各类场景下,需要各种数据转化。2 等号赋值与memcpystrcpy等函数的逐字节拷贝,memcpy是按照机器字长逐字进行拷贝的,...原创 2019-12-26 06:58:39 · 693 阅读 · 0 评论 -
Unix/C/C++--回调
Unix/C/C++--回调1 介绍2 理解3 示例3.1 借助接口类实现回调3.2 类之间调用参考1 介绍2 理解3 示例3.1 借助接口类实现回调#include <iostream>#include <string>#include <sigc++/sigc++.h>class Printer :public sigc::trackabl...原创 2019-12-12 19:29:38 · 356 阅读 · 0 评论 -
Unix/C++--结构体struct和class类区别
Unix/C/C++--结构体struct和class类区别1 struct 介绍2 class介绍3 异同参考1 struct 介绍2 class介绍3 异同C++中声明一个新的型别,如果不需要虚拟函数,不需要构造,析构方法,那么声明为struct要比声明为class更高效和简洁,因为编译器内部会对此进行分析并且优化。参考1、2、...原创 2019-11-30 21:46:35 · 353 阅读 · 0 评论 -
Unix/C/C++--宏
Unix/C/C++--宏1 简介2 一般应用3 高级应用3.1 功能宏开关模块3.1.1 实现3.1.2 优点3.2 使用一些宏跟踪调试参考1 简介简单的宏定义:#define <宏名> <字符串>例: #define PI 3.1415926带参数的宏定义#define <宏名> (<参数表>) <宏体>例: #de...原创 2019-11-30 20:39:26 · 348 阅读 · 0 评论 -
Unix/C/C++--线程
Unix/C/C++--线程1 线程的简介2 进程和线程关系及区别2.1 线程2.2 进程3 线程执行模型4 Posix 线程4.1 介绍4.2 示例4.3 主要API的介绍4.3.1 创建线程pthread_create4.3.2 终止线程pthread_exit4.3.3 回收已终止线程的资源pthread_join4.3.4 分离线程pthread_detach参考1 线程的简介多进程...原创 2019-11-16 12:41:56 · 450 阅读 · 0 评论 -
Unix/C/C++--enum
C/C++--enum1 介绍1.1 C中enum1.2 C++中enum2 详解2.1 定义2.2 内存2.2.1 占用内存大小2.2.2 存储区域2.3 作用域2.4 存储类型2.4.1 C2.4.2 C++2.5 类型转换2.6 生命周期2.7 特殊用法3 编译参考1 介绍12个月份名、一周7天名、模式名、状态名,等同类名合集,在程序中会用到。使用宏定义实现,宏名过多,代码松散;使用数...原创 2019-10-31 19:49:13 · 530 阅读 · 0 评论 -
Unix/C/C++---字符串 偏 string
C++---string1 介绍2 char str[] 使用2.1 介绍2.2 常用操作函数3 string 使用3.1 头文件3.2 构造函数3.3 string类的字符操作3.4 特性描述3.5 赋值3.6 连接3.7 比较3.8 子串3.9 交换3.10 查找3.11 替换3.12 插入3.13 删除3.14 迭代器处理3.15 字符串流处理参考1 介绍字符串实际上是使用 null ...原创 2019-10-31 07:28:08 · 558 阅读 · 0 评论 -
C--C标准库-string
一、介绍string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。 致谢1、C标准库-<string.h> 简介string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。库变量下面是头文件 string.h 中定义的变量类型:序号 变量 & 描述 1 size_t 这是无符号...转载 2018-06-03 22:39:03 · 563 阅读 · 0 评论 -
C--值传递、指针传递和引用传递(C++)
一、基本介绍1、值传递:形参是实参的副本(复制、拷贝),形参值的改变不会影响实参的值,这种方式用的最多。2、指针传递:形参是指针类型,形参作指针运算后指向的就是实参,所以会影响实参的值,这种方式用的也很多。3、引用传递(C++):在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。这种方式用的也蛮多的。(引用只是一个别名) 二、代码示...原创 2018-06-05 10:08:51 · 559 阅读 · 2 评论 -
C--函数指针和指针函数
一、函数指针1、介绍在C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为“函数指针变量”。函数名是指向函数的指针,调用函数时,就是在使用函数指针。2、定义类型说明符 (*指针变量名)();这...原创 2018-06-07 10:38:32 · 448 阅读 · 0 评论 -
C--静态库与动态库
一、介绍1、静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。2、动态库又称动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于...原创 2018-06-07 14:48:40 · 2356 阅读 · 0 评论 -
C语言练手项目--C 语言制作简单计算器
C 语言制作简单计算器一、需求二、实现1、代码2、运行结果三、参考链接一、需求使用 C 语言做一个简单的计算器,能执行加、减、乘、除操作二、实现1、代码/* * Author: sen * Date: 2018-12-04 */#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp原创 2018-12-04 22:27:40 · 5041 阅读 · 4 评论 -
C--C代码对应的存储
一、介绍C代码中变量、代码段等都有对应存储的分段,理解清楚它们之间的关系,有助于理解一些bug。 二、存储器图 三、详解1、堆存储小结(1)可以用malloc()函数在堆上申请空间。该函数返回的是一个指针。(2)堆的空间是有限的,要合理使用。(3)使用栈时,不需要关心存储器,栈的使用过程时自动管理的。离开函数后,局部变量就会自动从栈中清除。(4)堆和栈不...原创 2018-06-03 20:29:05 · 452 阅读 · 0 评论 -
C--一些有趣代码
一、介绍1、C语言的语法能造就一些有趣的代码,下面便是一些有趣代码的示例。 二、有趣代码锦集1、数组变量的有趣使用(1)代码//#include <stdio.h>int main(){ int num[] = {1,2,3,4} printf("the 3[num] result is : %d\n", 3[num]); return 0;}...原创 2018-06-03 09:56:18 · 23230 阅读 · 3 评论 -
C--代码规范
一、文件开头注释///************************************************************************* > File Name: test.c > Description: > Author: Sen > Date: 2018-5-21 ...原创 2018-05-21 12:49:21 · 436 阅读 · 0 评论 -
C--快速排序
0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 0.2 算法复杂度0.3 相关概念...转载 2018-05-08 09:00:54 · 369 阅读 · 0 评论 -
C--main函数以及入口参数详解
一、main函数的基本介绍1、main函数是工程的入口主函数。 二、main函数的示例1、示例一//#include <stdio.h>int main(){ …… return 0;}//2、示例二怕(谭浩强《C语言程序设计》[第四版]10.7.3)//#include <stdio.h>int main(argc, ...原创 2018-05-08 08:53:14 · 8558 阅读 · 1 评论 -
C--指针
一、指针的理解注:(1)指针变量使用之前必须赋值,未赋值的指针变量不能使用,否则将造成系统还乱,甚至死机。(2)指针变量只能赋予地址。举例:int a = 1;int *p = &a; (int 类型说明符,说明指针变量值是int型变量的地址,同时也是地址操作中步长的依据) 二、数组与指针1、要点(1)数组变量可以用作指针,但是数组变量和指针又不完全一...原创 2018-04-23 17:01:55 · 407 阅读 · 0 评论 -
C--for循环语句头的执行顺序
一、介绍1、for语句是C语言中最基本的语句之一。2、for循环可以说在每个程序中都少不了的,语句头包括三个部分:初始化,判读条件,一个表达式。3、一般形式for(初始化语句; 条件语句; 控制语句){ 中间循环体;}4、执行顺序初始化语句-->条件语句-->中间循环体-->控制语句-->条件语句-->中间循环体--&g...原创 2018-06-14 19:29:45 · 692 阅读 · 0 评论 -
C--函数参数的入栈顺序
一、问题1、代码//#include <stdio.h>int main(){ int b = 3; int arr[] = {6, 7, 8, 9, 10}; int *ptr = arr; *(ptr++) += 123; printf("%d, %d\n", *ptr, *(++ptr));}//2、runoob上运行3、ubuntu ...原创 2018-06-14 20:35:14 · 1331 阅读 · 0 评论 -
c--三目运算符
三目运算符,又称条件运算符,指的是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。 可以理解为条件 ? 结果1 : 结果2 里面的?号是格...原创 2017-12-27 19:15:41 · 7872 阅读 · 0 评论 -
C语言概述
C语言概述1、前期准备1.1 计算机体系结构1.2 C历史发展、资料1.3 C二进制与字符集1.4 编辑器1.5 编译器1.6 编码规范2、语法2.1 基本元素2.2 数据类型2.3 运算符2.4 变量的存储方式、作用域和生命周期2.5 数组2.6 函数2.7 指针2.8 main函数以及入口参数2.9 C代码对应的存储2.10 结构体的定义和使用2.11 值传递、指针传递和引用传递(C++)2...原创 2019-01-21 22:00:42 · 596 阅读 · 0 评论 -
C--中文汉字占用字节长度(字符集和字符编码)
中文汉字占用字节长度一、字符集和字符编码1、概念2、英文字母和中文汉字在不同字符集编码下的字节数二、环境对应的字符编码1、Ubuntu16.04虚拟机2、Notepad++三、sizeof运算汉字占用字节长度参考一、字符集和字符编码1、概念字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符编码(...原创 2019-01-21 21:59:17 · 15292 阅读 · 2 评论 -
C语言练手项目--C 语言编写万年历
C语言编写万年历一、需求二、实现1、思路2、代码3、运行结果三、参考链接一、需求二、实现1、思路(1)日历规则四年一闰,百年不闰,四百年再润1、 如果年份是4的倍数,且不是100的倍数,则是闰年;2、 如果年份是400的倍数,则是闰年;3、 不满足1、2条件的就是平常年。总结成一句话就是:四年一闰,百年不闰,四百年再闰。2、代码3、运行结果三、参考链接1、万年历——...原创 2018-12-10 13:52:16 · 1849 阅读 · 2 评论 -
C语言练手项目--C 语言编写聊天室
C 语言编写聊天室一、需求二、知识点1、TCP/IP协议2、文件操作3、数据库三、实现1、思路2、代码3、运行结果四、参考一、需求基于TCP编写,一个聊天室最多100人。客户端:1、用户需要登录,登录时只需要输入一个昵称即可无需判断昵称是否重复(如果其他功能都ok考虑)2、用户登录后连接服务器端,进入聊天室3、用户可以输入聊天信息,也可以收到别人的聊天信息。4、用户可以用某个...原创 2018-12-12 21:14:04 · 10467 阅读 · 1 评论 -
C--static详解
一、介绍1、static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。static 是全局变量的默认存储类二、代码验证1、static...原创 2018-08-08 23:40:06 · 439 阅读 · 0 评论 -
extern使用方法总结!
一、问题Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义? 二、详解1、函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern。但是引用的时候一样需要声明的。2、全局变量在外部使用声明时,extern关键字是必须的,如果变量没有extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在...原创 2018-08-07 19:45:55 · 236061 阅读 · 15 评论 -
C语言 基本输入输出函数
1 几组常见的输入输出函数在stdio.h头文件中内置了几种输入输出函数,如下列出:printf 与 scanfgetchar 与 putchargets 与 puts相比之下 printf 与 scanf的功能最为强大,但操作稍显复杂,后两种则功能简单,但针对性较强。2 printf函数功能:按照规定格式输出指定数据2.1.一般形式:如图格式控制:由“%”后跟格式字符组成。将输出数据转换为指定格...转载 2018-06-01 14:44:11 · 12634 阅读 · 0 评论 -
C--C语言的函数
一、函数的声明与定义1、函数的声明(1)函数声明的一般形式返回类型 函数名 (形参列表)(2)举例//void swap(int a, int b);//函数的形参列表中每个形参的标识符可省//void swap(int, int);//2、函数的定义(1)一般形式为//存储类说明符(可缺省) 返回类型 函数名 (形参列表) 复合语句//...原创 2018-04-23 09:07:31 · 469 阅读 · 0 评论 -
C--数组
一、一维数组1、一维数组的定义方式//类型说明符 数组名 [常量表达式];//2、举例//int a[10]; 说明整型数组 a,有 10 个元素。float b[10],c[20]; 说明实型数组 b,有 10 个元素,实型数组 c,有 20 个元素。//3、数组元素的一般形式为://数组名[下标]//例如 a[i]4、初始化赋值的一般形式/...原创 2018-04-23 09:05:46 · 411 阅读 · 0 评论 -
c--变量未初始化
一、介绍如果不能保证读取变量之前重置变量,就应该初始化变量。" -- 引自<<C++ Primer>> 二、示例代码1、示例一(1)输入某年某月某日,判断这一天是这一年的第几天?//#include <stdio.h>int main(){ int year, month, day, sum; sum = 0;...原创 2018-03-06 19:14:56 · 3971 阅读 · 0 评论 -
c语言学习--time库函数详解
包含文件: 一、在C语言中有time_t, tm, timeval等几种类型的时间1、time_ttime_t实际上是长整数类型,定义为:typedef long time_t; /* time value */ 2、timevaltimeval是一个结构体,在time.h中定义为:struct timeval{ __转载 2018-01-04 15:53:24 · 9228 阅读 · 0 评论 -
c--循环结构中break、continue、goto、return和exit的区别(加精)
循环结构中break、continue、goto、return和exit的区别 1. breakbreak语句的使用场合主要是switch语句和循环结构。在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句。如果在多重嵌套循环中使用break语句,当执行break语句的时候,退出的是它所在的循环结构,对外层循环没有任何影响。如果循环...原创 2017-12-28 21:40:54 · 614 阅读 · 1 评论 -
c--scanf()函数详解
一:scanf()函数的影响scanf()函数是所有C语言学习者在学习C语言过程中所遇到的第二个函数(第一个函数是printf(),Brian W.Kerninghan & Dennis M.Ritchie的“hello,world”程序基本上是所有的C语言学习者第一个范例),所以scanf()函数应当是C学习者能熟练运用的一个函数,但有很多初学者对此函数不能很好的运用,在...原创 2017-12-28 12:29:03 · 10528 阅读 · 8 评论 -
c--编码规范
编码规范是一个很大的问题!之前我的C语言编码规范是按着大学养成的习惯来的,可是满足不了工作的需求,现在就仿着华为的编码规范来吧。不过其中的函数名的命名规则,华为的是按驼峰命名规则,但是自己觉得别扭,现在公司要求不严,那就按Qt的命名规则来吧,小写,中间下划线,这样看着爽。至于别的,自己慢慢补充!1、函数名命名小写、中间下划线2、花括号谭浩强的第四版《C程序设计》的建议是...原创 2017-12-27 23:21:23 · 398 阅读 · 0 评论 -
gcc中的-w -W和-Wall选项
今天在看一个makefile时看到了gcc -W -Wall....这句,不明其理,专门查看了gcc的使用手册。-w的意思是关闭编译时的警告,也就是编译后不显示任何warning,因为有时在编译之后编译器会显示一些例如数据转换之类的警告,这些警告是我们平时可以忽略的。-Wall选项意思是编译后显示所有警告。-W选项类似-Wall,会显示警告,但是只显示编译器认为会出转载 2018-01-03 11:23:18 · 3638 阅读 · 0 评论 -
gcc -lm -lpthread 一类的理解
C代码调用math.h中的函数有问题,如sqrt函数。会出现问题(点击看问题)。原因是调用中的函数,编译时需要链接对应的库 libm-lm命令是使编译的时候,链接数学库;-lptread 链接线程库,可以使自己编译的库 ;g++编译程序成为.o目标函数,然后需要和库函数连接到一起;gcc 在编译时就可以将其替换为对应的值(gcc 优化的一部分),从而不需要链接 sqrt 所原创 2017-12-27 17:04:30 · 2497 阅读 · 0 评论 -
ubuntu下math.h头文件的编译问题
环境:1、ubuntu 16.042、Vim 7.4问题:1、调用math.h头文件中的函数,直接按如下编译会报错。//gcc test.c/////tmp/ccJKFWzl.o: In function `main':1.c:(.text+0x45): undefined reference to `sin'collect2: error: ld retur原创 2017-12-27 13:47:08 · 3006 阅读 · 0 评论 -
vim编译器的介绍&vim编译器与vi编译器的对比
Vim编译器的优点:Vi和Vim它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面,vi使用于文本编辑,但是vim更适用于coding。vim的这些优势主要体现在以下几个方面:1、多级撤消我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。2、易用性vi只能运行于unix中,而vim不仅可以运行于原创 2017-12-27 11:07:21 · 917 阅读 · 0 评论 -
C语言编程魔法书--基于C11标准(陈铁)
之前技术群里,群主送了我一本《C语言编程魔法书》,现在抽出时间对C11版的做个系统了解!感谢送书的群主,也感谢该书的作者!作者的csdn链接:zenny_chen的专栏作者的微博专栏:zenny1chen微博本书的后两章代码的地址:Zenny Chen本书的在线阅读链接:在线阅读链接欢迎搬砖的支持该书作者!哈哈!自己的读书收获会写在自己的博客中!原创 2017-12-27 10:30:41 · 2361 阅读 · 1 评论