C学习
文章平均质量分 56
the_lion_song
这个作者很懒,什么都没留下…
展开
-
client server
PS:网络很重要,好好学~~~!!! 下面赋今天学习的代码:[cpp] view plain copy /******************* 服务器 *******************/ #include #include #include #include #include #include #转载 2017-01-22 10:34:09 · 640 阅读 · 0 评论 -
函数名
函数的执行过程1:通过函数名找到函数入口2:给形参分配空间3:传值4:执行函数体语句5:返回,释放空间注意:当只使用而不改变实参对应的空间的值时,传实参变量名当要使用并且改变实参对应的空间的值时,传实参变量对应的空间地址原创 2016-12-07 22:02:10 · 222 阅读 · 0 评论 -
链表
在第一章的数组中,我们看到数组作为数据存储结构有一定的缺陷。在无序数组中,搜索时低效的;而在有序数组中,插入效率又很低;不管在哪一种数组中删除效率都很低。况且一个数组创建后,它的大小是无法改变的。 在本章中,我们将讨论下链表这个数据结构,它可以解决上面的一些问题。链表可能是继数组之后第二种使用得最广泛的通用数据结构了。本章主要讨论单链表和双向链表。转载 2016-12-13 21:34:07 · 298 阅读 · 0 评论 -
数组与指针
C++/C 程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为例比转载 2016-12-05 22:16:51 · 155 阅读 · 0 评论 -
2016.11.22 左右法则
左右法则右左法则:首先从最里面的圆括号内未定义的标识符开始阅读看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。 总之对声明进行分析,最根本的方法还是按优先级和结合性来类比替换,从那些最基本的声明进行类比,简化,从而进行理解。下面分析几个例子,来具体阐述如何使用这种方法。简单:in原创 2016-11-22 21:30:42 · 277 阅读 · 0 评论 -
2016. 11.22 输入一个整数,用字符串输出
#include #include #define MAX 1024void turn(int k, char *src) 这里是定义调用的函数{ int i = 0; int len = 0; char temp; while( k != 0) {原创 2016-11-22 20:34:11 · 673 阅读 · 0 评论 -
运算符与表达式
1 概论计算机内存中的数据可以通过变量,常量来表示和存储,那么这些数据如何运算? C语言中提供了大量(34种)的运算符可以用来完成数据的算术,赋值,逻辑,关系,条件判断以及自增自减运算和基于二进制的位运算,同时提供了跨平台的用于数据格式化输入输出的函数printf()和scanf(),而实际上计算机需要去完成的任务正是读取输入的数据,根据业务逻辑进行计算之后将结果输出。在学习为转载 2016-12-12 21:53:56 · 341 阅读 · 0 评论 -
C指针
1 .什么是指针在探究之前我们要弄清楚指针的概念,指针做什么int *p;1学过C的人都应该知道,这定义了一个指针,在这里p到底是个什么东西呢? 其实,p也就是一个变量,而对于变量,就可以理解为一个左值,会开辟一块内存空间,然后在这块空间中储存内容。理解指针int *p;int a=10;p=&a;123在这几句话,也不难理解,正因为像咱们在上面转载 2016-11-21 21:49:18 · 145 阅读 · 0 评论 -
20161203
一维数组名:数组名是指针常量,保存的是数组首元素的地址a 一维数组的首元素的地址&a :对数组名取地址 =数组的地址*(&a) = a :对一维数组的地址取值=1维数组的首元素的地址aa :首个一维数组的地址*aa :首个一维数组的首元素的地址**aa :首个一维数组的首元素的值&aa :对二维数组名取值等于二维数组的地址*(&aa) = aa :对二维数组的原创 2016-12-03 21:43:19 · 166 阅读 · 0 评论 -
左右法则
C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的: The right - left rul转载 2016-11-20 22:00:16 · 165 阅读 · 0 评论 -
指针与数组的区别
空间分配上;数组是静态分配(静态存储区或栈空间)指针是动态分配(堆空间)访问效率:数组是直接访问(效率更高)指针是间接访问(灵活性更高)安全性:数组会出现数组越界指针可能会导致内存泄漏函数形参:数组,一维数组用指针存放二维数组用一维指针存放空间连续性:数组是一定连续指针不一定连续原创 2016-12-08 22:14:15 · 205 阅读 · 0 评论 -
将一个句子里的英文单词倒叙输出,但不改变单词里的字母顺序
#include #include #define MAX 1024int change(char *str,int len) { int i = 0; int j = 0; int m = len - 1; char temp = 0;原创 2016-11-26 21:53:02 · 2660 阅读 · 0 评论 -
四层网络模型与七层网络模型
先说四层的TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。TCP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。 TCP/IP分层模型的四个协议层分别完成以下的功能:第一层 网络接口层 网络接口层包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数原创 2017-01-20 10:05:45 · 819 阅读 · 0 评论 -
网络基础知识罗列
1:四层网络模型与七层网络模型2:5类Ip的分类3:ip,端口号,网关,dns,路由,vpn的作用4:tcp与udp的区别5:三次握手,四次挥手详细过程与作用6:什么时候使用tcp协议,什么时候使用udp协议7:c/s架构和b/s架构的优缺点8:tcp的数据报头的构成9:udp的数据报头的构成10:如何使用udp实现可靠传输原创 2017-01-20 10:02:46 · 277 阅读 · 0 评论 -
常用API
常用系统函数在使用C++语言进行编程时,许多很基本和很重要的功能都由系统的库函数和类库来实现。为便于学习和使用,本附录列出了一些常用的库函数,供读者查阅。本附录的依据是Windows 环境下VC++编译系统。由于不同编译系统提供的库函数和类库可能会稍有差异,读者在实际使用时应参考所使用系统的手册。为方便查阅,本附录的内容基本按函数类型分类,不同的分类中的内容可能会有转载 2017-01-19 22:35:28 · 407 阅读 · 0 评论 -
sqlite学习
QLite采用动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称这为“弱类型”。但有一个特例,如果是INTEGER PRIMARY KEY,则其他类型不会被转换,会报一个“datatype missmatch”的错误。 SQLite支持NULL、I转载 2017-01-18 23:36:28 · 357 阅读 · 0 评论 -
0117 带缓存的I/O操作
今天,所想提及的是linux学习中的带缓存I/O操作暂时所说的主要有fopen,fclose,fread,fwrite操作fopen与函数fopen相关函数有open ,fclose要注意的是fopen函数所需的 头文件仅为#include ,因此这个函数比open函数要方便在linux系统中,这个函数的定义为 FILE * fopen(const char * path,co原创 2017-01-17 19:55:37 · 258 阅读 · 0 评论 -
20161218
C语言常见死循环1:while(1){}2:for( ; ; ){任意语句}staticstatic修饰变量和函数1:static修饰局部变量,叫做静态局部变量保存在数据区的static段,生命周期变成整个程序2:static修饰的全局变量,只能在本文件访问,外部文件不能访问3:static修饰一个函数,该函数只能在本文件访问,外部文件不能访原创 2016-12-18 21:47:23 · 234 阅读 · 0 评论 -
c语言链表详解
c语言链表1. 链表介绍C语言的单向链表翻转是面试官常问问题之一,故此,咱就谈一谈,链表并不是如此可怕,学不会,想不通.链表和数组一样都是存储数据,链表是非连续,非顺序的存储结构.链表是灵活的内存动态管理(随机分配空间),删除创建结点非常方便链表组成:由一系列结点组成.链表结点:实际上是结构体变量.typedef struct _LINKNODE{int转载 2016-12-17 22:08:36 · 1183 阅读 · 1 评论 -
编程规范1
1排版1-1:程序块要采用缩进风格编写,缩进的空格数为4个。说明:对于由开发工具自动生成的代码可以有不一致。1-2:相对独立的程序块之间、变量说明之后必须加空行。示例:如下例子不符合规范。if (!valid_ni(ni)){ ... // program code}repssn_ind = ssn_data[i原创 2016-12-09 22:38:00 · 257 阅读 · 0 评论 -
输入一串字符,输入头串与尾串,在该字符串里找出这段字符串
#include#include#define MAX 1024int head_flog = 0;int tail_flog = 0;char *tail(char *str, char *b){ int num = 0; int len_b; char *temp = b; len_b = strlen(b);原创 2016-11-27 20:34:17 · 430 阅读 · 0 评论 -
2016.11.19 C上课重点
C语言的特点:1:所有操作系统的内核都是由C语言实现的2:可移植性,可以在不同平台不同系统上运行(切换平台时,所需更改的语句少,就是移植性好)3:很高的运行效率4:简洁紧凑,可以直接访问硬件C语言的缺点:1:代码的复用性差(C是面向结构的)2:维护性差3:扩展性差c语言的标准:1:K&RC 2:ANSIC/C89 3:C99 4:C11数据类型1:一个整原创 2016-11-19 21:57:57 · 169 阅读 · 0 评论 -
编程规范3
3标识符命名3-1:标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。示例:如下单词的缩写能够被大家基本认可。temp可缩写为 tmp ;flag可缩写为 flg ;sta原创 2016-12-11 22:27:16 · 186 阅读 · 0 评论 -
2016.11.15 C语言常遇概念问题
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwellsGithub:https://github.com/AllenWells一 基本概念1.1 关键字static的作用在函数体,一个被声明为静态的变量在这一函数被调用的过程中维持其值不变。在模块内(但在函数体转载 2016-11-15 21:57:53 · 305 阅读 · 0 评论 -
今日学习
今天学习的是gcc特点是它是一个交叉式编译器,能够在当前CPU上为多种不同体系的结构的硬件开发软件。在编辑的过程中,有四个阶段:预处理,编译,汇编,链接。 预处理:头文件展开,宏替换,条件编译。其中,重要的指令是 -E,-c,-S,-o。静态库与动态库 库文件:可以是用函数与变量,但是无法看到函数与变量是如何实现的。 区别:原创 2016-11-11 23:05:26 · 215 阅读 · 0 评论 -
2016.11.11 链接阶段的工作+gcc01,02,03级优化分别优化的是什么+-static的作用
链接阶段在成功编译之后,就进入了链接阶段。在这里涉及到一个重要的概念:函数库。读者可以重新查看这个小程序,在这个程序中并没有定义”printf”的函数实现,且在预编译中包含进的”stdio.h”中也只有该函数的声明,而没有 定义函数的实现,那么,是在哪里实现”printf”函数的呢?最后的答案是:系统把这些函数实现都被做到名为libc.so.6的库文件中去了,在没有 特别指定时,g原创 2016-11-11 22:00:49 · 2391 阅读 · 0 评论 -
大数储存
說明基於記憶體的有效運用,程式語言中規定了各種不同的資料型態,也因此變數所可以表達的最大整數受到限制,例如123456789123456789這樣的 整數就不可能儲存在long變數中(例如C/C++等),我們稱這為long數,這邊翻為超長整數(避免與資料型態的長整數翻譯混淆),或俗稱大數運算。解法一個變數無法表示超長整數,則就使用多個變數,當然這使用陣列最為方便,假設程式語言的转载 2016-11-10 22:33:38 · 384 阅读 · 0 评论 -
如何将一串字符中的数字加和
#include #include #define MAX_SIZE 100int main(){print int k = 0; int sum = 0; char str[MAX_SIZE]; printf("please input a string : \n"); for(i = 0;原创 2016-11-09 22:09:35 · 835 阅读 · 0 评论 -
c编程规范
C/C++ 编程规范1.文件结构每个C++/C 程序通常分为两个文件。一个文件用于保存程序的声明(declaration), 称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition) C++/C 程序的头文件以“.h”为后缀,C 程序的定义文件以“. c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“转载 2016-11-08 21:51:42 · 365 阅读 · 0 评论 -
2016.11.06
1、Vi编辑器在使用中有三种形式:一般模式,编辑模式,命令行模式。一般来说,进入VI之后就进入了一般模式,这个时候你可以删除,粘贴,复制文件的内容。编辑模式指的是除了可以进行一般模式的许多操作之外,还可以进行插入,修改文件内容的功能。命令行模式,在这个模式下,你可以用一些命令来完成你对数据的操作。无论是哪个模式,如果想退回到一般模式下,按退出键即可。PS:关于三转载 2016-11-06 22:29:38 · 163 阅读 · 0 评论 -
2016.11.05
文本编辑器有很多,图形模式下有gedit、kwrite等编辑器,文本模式下的编辑器有vi、vim(vi的增强版本)和nano。vi和vim是Linux系统中最常用的编辑器。有人曾这样的说过在世界上有三种人:一种是使用Vi的,另一种是使用是Emacs的,剩下的是第三种人。(一)初级个性化配置你的vim1、vim是什么? vim是Vi IMproved,是编辑器Vi的一个加强版,一转载 2016-11-05 22:38:07 · 216 阅读 · 0 评论 -
2016.11.4
其中今日学习按照系统的收费情况来分,有商用和免费版 1商用版:Hopen,Delta OS,VXworks,Nucleux,PlumOS,Symbian,winCE,qm,psos,VICTX,Lynxos 2.免费版:Linux,ucLinux,uc os2,ecos,UITROn我们所重点学习的的是Linux,uc os2 winCE.所要补充的是,uc os2是一个只有五原创 2016-11-04 22:27:00 · 188 阅读 · 0 评论 -
2016.11.3
初学者C学习第三阶段今天学习的C的循环结构和函数do-while语句的一般形式为: do 语句 while(表达式); 这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。而while则是表达式的值是1就继续进行{原创 2016-11-03 21:49:20 · 199 阅读 · 0 评论 -
野指针与避免
1.我们知道在程序中使用了一个野指针,会引起程序出错,造成段错误。下面我举一个例子指出野指针[objc] view plain copy print?#include int main() { charchar *str; printf("input a str\n"); scanf(" %s", str)转载 2016-11-28 21:47:47 · 236 阅读 · 0 评论 -
2016.11.12
今天学习的是gdb 与makeGDB是GNU发布的程序调试工具,在其工作时,它可以做以下工作 1:启动调试程序 2:让调试的程序在指定的位置停住 3:当程序被停住时,可以检查程序状态在其编译时要加上'-g'例如: #gcc -g test.c -o test #gdb test在GD原创 2016-11-12 22:26:52 · 153 阅读 · 0 评论 -
2016.11.18
今天老师讲了makefile中如何不用函数来实现make的过程make的好处是,先生成点O文件,当要编译文件量很大时,突然发现有文件要更改时,可以只用改一个需要的文件,大大缩短编译时间,因为make命令会检查文件的时间戳,会重新编译更改的文件。尤其要注意的问题是: 1:makefile的作用 2:快速写一个简单的makefile 3:学过什么样的makefile然后,老师又原创 2016-11-18 22:20:05 · 175 阅读 · 0 评论 -
常用vim命令
今天上课,老师又提到了VIM的命令,这里。我就分享一下自己保存的常用命令vim命令总结1.删除字符 要删除一个字符,只需要将光标移到该字符上按下"x"。2.删除一行 删除一整行内容使用"dd"命令。删除后下面的行会移上来填补空缺。3.删除换行符 在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是"J"。4原创 2016-11-18 22:09:42 · 252 阅读 · 0 评论 -
编程规范2
2注释2-1:一般情况下,源程序有效注释量必须在20%以上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。2-2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它原创 2016-12-10 22:44:25 · 224 阅读 · 0 评论 -
20161130
要养成以下的良好习惯1:当一个指针没有指向时,要将其初始化为NULL2:当为指针赋值时,一定要给它分配空间3:当赋值成功时,要检查是否分配成功4:要对分配的内存初始化5:用完内存要释放6:释放完了要置NULL原创 2016-11-30 22:03:42 · 170 阅读 · 0 评论 -
2016.11.13 GDB
熟练使用gdb是一个Linux下开发人员必备的一项技能,我们由浅入深的学习一下gdb的强大功能。一.gdb简单介绍名称 gdb - GNU 调试器提要 gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e转载 2016-11-14 21:18:39 · 352 阅读 · 0 评论