
C语言
奔跑的蜗牛0510
这个作者很懒,什么都没留下…
展开
-
C语言运算符一览表
优先级分类同级运算符运算名称运算目数结合方式高强制() [] ->括号(如函数、加括号),取下标,取字段、成员双目(但括号可单目)左结合单目! ~ ++ -- + - * & (类型符) sizeof非,(按)位非,增量原创 2012-05-28 14:43:41 · 1255 阅读 · 0 评论 -
指针与指针变量
通常指针变量的使用是:先定义指针变量,后给指针变量赋值,最后引用指针变量。现说明如下: (1)定义指针变量 在变量定义语句int *p, *p1, *q; 中用 * 定义的变量均为指针变量。因此该语句定义了名为p、p1与q三个整型指针变量。因为指针变量用于存放变量地址,而地址通常为4字节,所以指针变量的长度均为4个字节。 (2)指针变量赋值 指针变量定义后其值为随机数,若此原创 2012-05-31 20:11:00 · 179 阅读 · 0 评论 -
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中原创 2012-07-04 17:37:40 · 1398 阅读 · 1 评论 -
详解C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;vo原创 2012-06-26 14:59:40 · 565 阅读 · 0 评论 -
串口通信实现
前段时间编写了串口通信的代码用的是RS-232数据线; #include /*标准输入输出定义*/#include /*标准函数库定义*/#include /*Unix 标准函数定义*/#include #include #include #include #include #include #define dev "/dev/t原创 2012-08-21 16:47:21 · 1873 阅读 · 0 评论 -
read\write 堵塞与非堵塞读取串口数据
read函数从打开的设备或文件中读取数据。#include ssize_t read(int fd, void *buf, size_t count);返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移。注意这个读原创 2012-10-31 16:05:04 · 13598 阅读 · 0 评论 -
静态变量与普通变量
“静态变量是在堆分配的,而普通变量是在栈上分配的,栈上分配的变量是动态的,可以实现重用,而堆上分配的变量是不能实现重用。还有普通变量可以实现多次初始化,而静态变量只能初始化一次。”原创 2012-11-27 16:51:56 · 541 阅读 · 0 评论 -
minimad
/** 002 * libmad - MPEG audio decoder library 003 * Copyright (C) 2000-2004 Underbit Technologies, Inc. 004 * 005 * This program is free software; you can redistribute it and/o原创 2012-11-17 13:40:14 · 1561 阅读 · 0 评论 -
myminimad.c
/* * 本程序是从 minimad 改进而来,如要更详细的说明请参看 minimad.c * * MyMinimad.c , 2008/09/17 , SiChuan University , China * * 编译: gcc MyMinimad.c -o MyMinimad -lmad -g -Wall * 运行: ./MyMinimad filename.mp3原创 2012-11-17 13:38:22 · 1145 阅读 · 0 评论 -
ioctl
函数名: ioctl 功 能: 控制I/O设备 用 法: int ioctl(int handle, int cmd,[int *argdx, int argcx]); include/asm/ioctl.h中定义的宏的注释:#define _IOC_NRBITS 8 //序数(number)字段转载 2012-12-03 15:19:57 · 508 阅读 · 0 评论 -
printf 函数中\r的含义
\r 转义序列。表示carriage return(回车键)\n是另起一行,\r的话回车回到本行的开头,如果继续输入的话会把先前的覆盖掉 Turbo C2.0中有些常用的字符用以下特殊规定来表示: 规定符 等价于 含原创 2012-12-05 12:27:20 · 5381 阅读 · 0 评论 -
如何面试程序员?
一、提问之前的准备首先,最重要的是,你自己一开始就应该想清楚: 1. 需要新员工完成什么样的任务? 2. 怎样的人能完成这样的任务? 3. 哪些途径和方法可以发现这样的人?只有明确这些根本性的问题,才能正确高效地完成面试。二、提问的原则假定你对上一节的三个问题,已经有了清晰的想法,那么接下来就可以设计如何提问了。有一些提原创 2012-12-05 12:29:38 · 711 阅读 · 0 评论 -
mad.c
# include # include # include # include # include # include # include # include # include # include "mad.h" struct buffer { unsigned char const转载 2012-11-22 09:45:28 · 621 阅读 · 0 评论 -
system返回值
system函数的返回值就是它执行程序的返回值一般情况下0表示没错返回-1表示出错你直接检查system的返回值好了int ret = system("TASKKILL /F /IM text.exe");if(ret == -1) { /*出错*/ }参考msdn来的:http://msdn.microsoft.com/en-us/library/277b原创 2013-01-27 11:27:55 · 1755 阅读 · 1 评论 -
C语言的联合(union)介绍
“联合”与“结构”有一些相似之处。但两者有本质上的不同。在结构中各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装入一个联合变量内, 而是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值。如前面介绍的“单位”变量, 如定义为一原创 2013-01-12 09:04:33 · 1196 阅读 · 0 评论 -
C/C++算法实例(四)--排序算法
A.快速排序:procedure qsort(l,r:integer);var i,j,mid:integer;begini:=l;j:=r; mid:=a[(l+r) div 2]; {将当前序列在中间位置的数定义为中间数}repeatwhile a[i]在左半部分寻找比中间数大的数}while a[j]>mid do dec(j);{在右半部分寻找比中间数小原创 2012-05-31 18:14:02 · 615 阅读 · 0 评论 -
C/C++算法实例(三)--背包问题
*部分背包问题可有贪心法求解:计算Pi/Wi数据结构:w[i]:第i个背包的重量;p[i]:第i个背包的价值;1.0-1背包:每个背包只能使用一次或有限次(可转化为一次):A.求最多可放入的重量。NOIP2001 装箱问题有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 (正整数)。要求从原创 2012-05-31 18:10:51 · 877 阅读 · 0 评论 -
C/C++算法实例(二)--图论算法
1.最小生成树A.Prim算法:procedure prim(v0:integer);varlowcost,closest:array[1..maxn] of integer;i,j,k,min:integer;beginfor i:=1 to n do beginlowcost[i]:=cost[v0,i];closest[i]:=v0;end;原创 2012-05-31 18:01:24 · 2476 阅读 · 1 评论 -
深入理解指针函数和函数指针
1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名*函数名(函数参数表列); 其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。原创 2012-05-28 19:53:08 · 646 阅读 · 0 评论 -
指针详解
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr原创 2012-05-29 10:23:25 · 1110 阅读 · 0 评论 -
标准C语言头文件
ISO C标准定义的头文件(24项) 验证程序断言 支持复数算术运算 字符类型 出错码 浮点环境 浮点常量 整型格式转换 替代关系操作符宏 实现常量 局部类别 数学常量 非局部goto 信号原创 2012-05-29 10:28:30 · 2547 阅读 · 3 评论 -
C语言数组排序小结
很多朋友是以谭浩强老师编的《c语言教程》作为学习c语言的入门教程的。书中涉及排序问题一般都以“冒泡法”和“选择法”实现。为了扩大视野,增加学习编程的兴趣,我参阅了有关书籍,整理了几种排序法,写出来同大家共勉。(高手们不要笑,这篇文章是写给出学者的,而且我自己也是只菜鸟,虽然内容陈旧,但值得初学者一看)。让我们先定义一个整型数组a[n],下面用五种方法对其从小到大排序。(1)“冒泡法原创 2012-05-29 11:22:47 · 860 阅读 · 0 评论 -
指针详解
第一章。指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让 我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)in原创 2012-05-30 12:03:44 · 519 阅读 · 0 评论 -
C/C++常见问题
一、#include “filename.h”和#include 的区别 #include “filename.h”是指编译器将从当前工作目录上开始查找此文件 #include 是指编译器将从标准库目录中开始查找此文件 二、头文件的作用 加强安全检测 通过头文件可能方便地调用库功能,而不必关心其实原创 2012-05-30 11:42:38 · 952 阅读 · 2 评论 -
50个c/c++ 源代码网站
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。 1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、ht原创 2012-05-30 13:36:51 · 828 阅读 · 0 评论 -
C/C++算法实例(一)--数论算法
学习C/C++还是不能停靠在文字的理解上,只有做题做题不断的做题才能有所提高,这是我学习C++是老师提供给我们的伪算法,下面希望初学者也能拿下来自己花时间算下,有不理解的,可以给我留言,相互交流!1.求两数的最大公约数function gcd(a,b:integer):integer;begin if b=0 then gcd:=aelse gcd:=gcd (b,a mod原创 2012-05-31 17:58:38 · 1696 阅读 · 1 评论 -
C/C++算法实例(五)--高精度计算
高精度数的定义:typehp=array[1..maxlen] of integer; 1.高精度加法procedure plus ( a,b:hp; var c:hp);var i,len:integer;beginfillchar(c,sizeof(c),0);if a[0]>b[0] then len:=a[0] else len:=b[0];原创 2012-05-31 18:15:28 · 959 阅读 · 0 评论 -
C/C++算法实例(六)--树的遍历
1.已知前序中序求后序procedure Solve(pre,mid:string);var i:integer;beginif (pre='''') or (mid='''') then exit;i:=pos(pre[1],mid);solve(copy(pre,2,i),copy(mid,1,i-1));solve(copy(pre,i+1,length(pr原创 2012-05-31 18:16:55 · 150 阅读 · 0 评论 -
C/C++算法实例(七)--其它
七进制转换1.任意正整数进制间的互化除n取余2.实数任意正整数进制间的互化乘n取整3.负数进制:设计一个程序,读入一个十进制数的基数和一个负进制数的基数,并将此十进制数转换为此负进制下的数:-R∈{-2,-3,-4,....-20}八全排列与组合的生成1.排列的生成:(1..n)procedure solve(dep:inte原创 2012-05-31 18:19:20 · 932 阅读 · 0 评论 -
复杂声明
C语言常常因为声明的语法问题而受到人们的批评,特别是涉及到函数指针的语法。C语言的语法力图使声明和使用相一致。对于简单的情况,C语言的做法是很有效的,但是,如果情况比较复杂,则容易让人混淆,原因在于,C语言的声明不能从左至右阅读,而且使用了太多的圆括号。我们来看下面所示的两个声明:int *f(); /* f: function returning pointer to int */以原创 2012-05-31 20:01:46 · 614 阅读 · 0 评论 -
深入理解C语言指针的奥秘
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5转载 2012-05-31 20:09:19 · 428 阅读 · 0 评论 -
TCP连接异常断开检测
TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现。某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接。下面介绍一种方法来检测这种异常断开的情况1) 在TCP协议中提供了KEEPALIVE检测。该选项使能后,在一个TCP连接上,若指定的一段时间内没有数据交换,则自动发送分节等待对方确认。 SO_KEEPALIV转载 2013-08-16 11:32:29 · 1030 阅读 · 0 评论