自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

转载 程序员应该知道的计算机网络知识

前言作为一名程序员, 不可能不与网络打交道. 现在我们的手机, 电脑, 不夸张地说, 离开了网络就是一块’废铁’, 它们的作用将大打折扣.. 本文的作用呢, 主要是针对不是非网络专业开发的人员准备的, 以’最短的时间, 了解计网最多的知识’为前提起笔.目录概述物理层数据链路层网络层传输层应用层概述先来了解下

2017-01-21 00:42:36 617

原创 Linux下的数据库操作

#include #include #include int handle_result(void *para, int column_count, char **column_value, char **column_name){    printf("para = %s\n",(char *)para);    printf("column count = %d\n

2017-01-19 23:06:49 221

转载 系统调用和库函数的区别

Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。第四:让api也可

2017-01-17 23:52:17 217

原创 c语言关键字和数据类型

1.宏函数和自定义函数的区别:(1)宏函数在预处理阶段结束;自定义函数经过编译、汇编、链接、生成可执行文件(2)宏函数只做替换;自定义函数要进行分配内存空间,释放内存空间等一系列操作。宏函数执行效率更高 2.宏函数的优点:尽管和真正的函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列操作,因此那些简短并且被频繁调用的函数

2016-12-19 23:09:17 403

转载 c语言编程---性能优化

使用宏定义  在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。  写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个:  错误做法:#define MIN(A,B)  ( A   正确做法:#define MIN(A,B) ((A)

2016-12-18 22:12:00 821

转载 C语言typedef:给类型起一个别名

C语言允许为一个数据类型起一个新的别名,就像给人起“绰号”一样。起别名的目的不是为了提高程序运行效率,而是为了编码方便。例如有一个结构体的名字是 stu,要想定义一个结构体变量就得这样写:struct stu stu1;struct 看起来就是多余的,但不写又会报错。如果为 struct stu 起了一个别名 STU,书写起来就简单了:STU stu1;这种写法更加简练,意

2016-12-17 23:59:51 479

原创 c语言运算符

1.i++使用结束后自加; ++i先自加后使用。例子int i = 2;int num;num =(i++)+(i++)+(i++)+(i++);结果i=6  num=8num =(++i)+(++i)+(++i)+(++i);结果i=6  num=19i=i *((i++)+(++i));结果i=19 2.函数传参从右边开始传例子void

2016-12-17 22:34:41 335

转载 c语言的结构体,共用体和枚举

结构体、共用体、枚举结构体的定义:结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。关键词:struct结构体的基本格式如下:[cpp] view plain copyprint?

2016-12-17 21:06:04 783

转载 C语言循环总结以及实例讲解

除了 while 和 for 语句,在C语言中还有一个语句 goto,它也能构成循环。不过由于 goto 语句很容易造成代码混乱,维护和阅读困难,饱受诟病,不被推荐,而且 goto 循环完全可以被其他循环取代,所以后来的很多编程语言都取消了 goto 语句,我们也不再讲解。国内很多大学仍然讲解 goto 语句,但也仅仅是完成教材所设定的课程,goto 语句在实际开发中很难见到。总结wh

2016-12-16 15:53:37 1203

转载 链表

在第一章的数组中,我们看到数组作为数据存储结构有一定的缺陷。在无序数组中,搜索时低效的;而在有序数组中,插入效率又很低;不管在哪一种数组中删除效率都很低。况且一个数组创建后,它的大小是无法改变的。        在本章中,我们将讨论下链表这个数据结构,它可以解决上面的一些问题。链表可能是继数组之后第二种使用得最广泛的通用数据结构了。本章主要讨论单链表和双向链表。        顾名思义,单

2016-12-13 23:26:07 203

原创 c语言函数知识点补充

1.函数的传出参数: 一个变量没有值,从函数中带出值函数的传入参数: 一个变量有值,让函数使用值可以通过传出参数让函数返回多个值 2.exit用来结束程序return用来结束函数 3.好的函数要有独立性、扩展性和稳定性 4.函数编写规范(1)对所调用函数进行异常处理(2)明确函数功能(3)防止函数参数作为工作变量(4)为简单功能编

2016-12-11 21:35:48 243

转载 c语言位操作总结

置位   #define BIT3 (0x1   static int a;void set_bit3(void)   {  a |= BIT3;  }void clear_bit3(void)   {  a &= ~BIT3;  }判断位是否为1 if (a & BIT3)nt a|=(1int b&=~(1x=x|0x0100    //

2016-12-11 20:32:25 708

转载 C语言的exit()函数

1,作用:使用exit函数需要引入 #include "stdlib.h"exit(int n)其实就是退出程序,返回操作系统状态。exit()表示结束当前进程或程序。由于C程序的默认入口为int main(int argc, char** argv),返回值是int型的。exit(0)程序正常推出,exit(1),exit(-1)或者其他值都表示程序非正常退出。理论上讲n

2016-12-11 00:03:58 2135

原创 c语言函数

1.函数执行过程(1)通过函数名找到函数入口(2)给形参分配空间(3)传值(4)执行函数体语句(5)返回,释放空间 2.函数传参的技巧当只使用不修改实参变量对应空间的值,传实参变量名;当既使用也修改实参变量对应空间的值,传实参变量对应空间的地址。 3.指针与数组的区别(1)空间分配:指针动态分配空间,空间利用率高;数组静态分配空间,空间利用率低

2016-12-10 00:02:57 203

转载 C语言函数的声明以及函数原型

C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明。所谓声明(Declaration),就是告诉编译器我要使用这个函数,你现在没有找到它的定义不要紧,请不要报错,稍后我会把定义补上。函数声明的格式非常简单,相当于去掉函数定义中的函数体再加上分号;,如下所示:返回值类型  函数名( 类

2016-12-08 21:54:53 1349

原创 c语言函数与指针

1.主函数形参int main(int argc, char *argv[ ] // char **argv)argv存储命令行参数argc命令行参数个数(包括命令本身) 2.传指针名或指针数组名用二维指针来接。 3.函数指针int(*p_func)(int,int);  定义函数指针p_func = add;  初始化函数指针函数名是指针常

2016-12-08 15:29:05 178

转载 指针与数组的区别

C++/C程序中,C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。    数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下

2016-12-06 20:53:23 232

转载 c语言指针总结(详细)

C语言中的精华是什么,那当然是指针,是C语言的难点部分。C是对底层操作非常方便的语言,而底层操作中用到最多的就是指针,这成就了优秀的C程序的效率几乎和汇编语言程序一样高的功绩。本文介绍C指针的一些基础和高级知识。关键好是多写代码,这样才能更好的理解C的精华--指针。1.  指针的概念指针是一种数据类型,与其它的数据类型不同的是指针是一种“用来存放地址值的”变量。首先搞懂

2016-12-04 22:50:47 257

转载 对C语言指针的总结

指针(Pointer)就是内存的地址,C语言允许用一个变量来存放指针,这种变量称为指针变量。指针变量可以存放基本类型数据的地址,也可以存放数组、函数以及其他指针变量的地址。程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符:在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地

2016-12-04 16:38:25 181

原创 c语言数组与指针

1.定义数组杜绝用变量来表示长度。例如int n;  int a[n]; 2.数组初始化为0:int a[ ] = {0};或memset(a,0,sizeof(a)); 3.一维数组数组名是指针常量,保存的是数组首元素的地址,不能自加。&a:对一维数组名取地址等于一维数组的地址*(&a) = a;:对一维数组的地址取值等于一维数组首元素的地址a:一维数组首元素

2016-12-04 00:21:14 157

转载 malloc的实现原理

malloc()是C语言中动态存储管理 的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值 是一个指向所分配的连续存储域的起始地址的指针。  动态内存分配 就 是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据 程序的需要即时分

2016-12-02 23:53:07 264

转载 C语言位运算

所谓位运算,就是对一个比特(Bit)位进行操作。在《二进制思想以及数据的存储》一节中讲到,比特(Bit)是一个电子元器件,8个比特构成一个字节(Byte),它已经是粒度最小的可操作单元了。C语言提供了六种位运算符:运算符&|^~>>说明按位与按位或按位异或取反左移右移按位与运算(&)一个比特(B

2016-12-01 23:40:16 218

原创 c语言野指针

1.什么是野指针野指针是随机指向一块内存的指针,容易造成内存泄露。但不一定每次都会产生段错误,因为可能分配到已经分配或申请过的地址。 2.如何避免野指针避免野指针需要养成一下良好的编码习惯:(1)当指针没有指向时,给它置为空(0地址NULL);因为在操作系统中,不能对0地址进行任何操作;置为空也能引起注意,不能对指向的空间进行操作。(2)当要给指针指向的空间赋值时,一定要给

2016-12-01 23:33:48 195

原创 c语言printf和指针初识

1.printf是行缓冲(满一行才输出)。遇到'\n'或者'\r'会输出;scanf和printf用的同一缓冲区,当printf与scanf连用时会输出。因此在写printf时要加'\n'。 2.当执行程序发现段错误时,可以在每一行代码下面加调试信息printf(“%s: %d\n”,__func__,__LINE__);,这样执行后就能找出出现段错误的代码的行数。 3.指针是变量

2016-11-29 22:27:23 458

原创 c语言的变量和常量

1.计算机三大组成部分:CPU  内存  硬盘 2.内存与硬盘的区别:内存保存动态数据,硬盘保存静态数据;断电时,内存数据丢失,硬盘数据不丢失。 3.内存是共享设备,是稀缺资源。操作系统用来管理资源,给每个进程抽象出4G虚拟地址空间,虚拟空间通过MMU映射到物理地址。 4.4G虚拟地址空间的划分:最高地址1G是内核空间,剩下3G是用户空间。用户空间分为栈空间,堆空间,数据区

2016-11-27 21:49:12 280

转载 C语言数组指针

数组(Array)是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素(Element)。数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存。以int arr[] = { 99, 15, 100, 888, 252 };为例,该数组在内存中的分布如下图所示:定义数组时,要给出数组名和数组长度,数组名可以认为是一个指针,它指向数组的第 0 个元素。在C语言中,我们将第 0

2016-11-27 19:04:53 131

转载 C语言指针数组

如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组。指针数组的定义形式一般为:dataType *arrayName[length];[ ]的优先级高于*,该定义形式应该理解为:dataType *(arrayName[length]);括号里面说明arrayName是一个数组,包含了length个元素,括号外面说明每个元素的类型为dataType *。除了每

2016-11-27 00:18:29 359

原创 c语言编程实例(使用函数)

1.从键盘输入一个整数,将其转化成字符串输出#include #include #define MAX 1000void reverse_string(char *s1, int len){    int i;    char temp;    for(i = 0; i     {        temp = *(s1 + i);    

2016-11-26 00:34:42 424

原创 c语言数据类型

1.在32位系统中,1字节=8bit,1字=4字节=32bit,半字=2字节=16bit2.字节长度是变量在内存中所占的存储空间sizeof是用来测量变量或数据类型所占的字节长度3.数据类型所占字节长度int  4字节char  1字节short  2字节long  4字节float  4字节double  8字节所有的指针保存的都是地址。在

2016-11-26 00:07:44 149

转载 C语言指针变量的运算

指针变量保存的是地址,本质上是一个整数,可以进行部分运算,例如加法、减法、比较等,请看下面的代码:复制格式化复制#include  int main(){ int a = 10, *pa = &a, *paa = &a; double b = 99.9, *pb = &b; char c = '@', *pc = &c; //最初的值

2016-11-22 22:48:39 479

原创 c语言的左右法则

1.左右法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该调转阅读方向。一旦解析完圆括号里的内容,就跳出圆括号。重复这个过程直到整个声明解析完毕。2.左右法则是用来理解复杂的声明的。3.左右法则的例子int *a[10];  a是一个整型指针数组int(*a)[10];  a是一个数组指针变量int(*a)(i

2016-11-22 20:32:37 857

原创 C语言概述

1.现有的开发语言  C,java,c++,php,c#,.net,python,shell,oc等。2.嵌入式开发为什么选择C语言因为所有操作系统的内核都是由C语言实现的。3.C语言的特点:出色的移植性,能够访问硬件,运行效率高。4.C语言的缺点:复用性差,维护性差,扩展性差。5.从一个平台切换到另一个平台,修改的代码越少,移植性越好。软件可以在不同的平台运行。C语言适用

2016-11-20 20:41:09 160

转载 C语言中的正负数以及数值溢出

在数学中,数字有正负之分。在C语言中也是一样,short、int、long 都可以带上符号,例如:复制格式化复制short a = -10; //负数int b = +10; //正数long c = (-9) + (+12); //负数和正数相加short a = -10; //负数int b = +10; //正数long c = (-9) + (+1

2016-11-20 14:08:10 5358

原创 Linux中的快捷键

1.vim命令行模式快捷键:  (10)yy复制(10行)  p粘贴  dd删除  u恢复2.vim底行模式快捷键:  /world  查找  ?world  查找  S/a/b  将指定行a替换成b(只替换一个)  S/a/b/g  将指定行a替换成b(替换全行)  S/a/b/gc(提示是否替换)  5,9 S/a/b/g  将5-9

2016-11-20 12:17:52 159

转载 C语言函数的参数和返回值

如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品;函数的作用就是根据不同的参数产生不同的返回值。函数的参数在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。形参和实参的功能是作数据传送,发生

2016-11-20 01:01:51 847 1

原创 c语言编程实例3(字符串与数组)

1.从键盘输入字符串1,再从键盘输入字符串2,求字符串2在字符串1中出现的次数#include #define MAX 1000int main(){    int i = 0;    int j = 0;    int count = 0;    char a[MAX];    char b[MAX];    printf(

2016-11-19 15:54:54 520

原创 Linux工程管理器make

1.怎么建立功能目录  mkdir -p add/src根据指令依次创建目录  mv add.c add/src/  touch add/Makefile在功能目录下建Makefile 2.功能目录中的目录  include 存放头文件  lib 存放库文件  tools 存放工具  doc 存放文档  scripts 存放脚本文件 3.学习

2016-11-19 15:19:33 275

转载 C语言指针与二维数组

二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有“缝隙”。以下面的二维数组 a 为例:int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };从概念上理解,a 的分布像一个矩阵:0 1 2 34 5 6 78 9 10 11但在内存中,a 的

2016-11-16 23:21:40 289

转载 C语言函数的递归调用

一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。【示例】用递归计算 n!。阶乘 n! 的计算公式如下:根据公式编程:复制格式化复制long factorial(int n){ long result;  if(n==0 || n==1){ result =

2016-11-14 10:11:43 316

转载 C语言二级指针

指针可以指向一份普通类型的数据,例如 int、double、char 等,也可以指向一份指针类型的数据,例如 int *、double *、char * 等。如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。假设有一个 int 类型的变量 a,p1是指向 a 的指针变量,p2 又是指向 p1 的指针变量,它们的关系如下图所示:将这种关系转换为C语言

2016-11-14 10:07:55 228

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除