C
suding666
我连你的名字不知道当我第一眼看到你时候我发现我没法淡定了
展开
-
详解C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;vo转载 2012-02-07 19:47:58 · 252 阅读 · 0 评论 -
结构体可以用等号直接赋值
#include #include struct ss_s{ int a; int b; char *c; int arr[3]; int *d;};int main(void) { struct ss_s tt, tmp; int q = 9, i; tt.a = 10;转载 2012-05-03 16:32:10 · 5710 阅读 · 0 评论 -
/dev/tty
/dev/tty 的特殊用途 (2011-06-22 10:25) 分类: C/C++ 我们知道在Linux的/dev目录下有一些特殊的文件,比如:/dev/tty, /dev/tty0, /dev/tty1 ...还有/dev/pts/0, /dev/pts/1, /dev/pts/2 ... 等。对于它们我们一般感觉比较理解。本文从编程的角度对其进行一些分析。转载 2012-05-10 13:39:53 · 18209 阅读 · 1 评论 -
反转一个线性链表
以下内容为转载,仅作为参考和笔记使用,非标准定义。望批评指教。//题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。//最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前//指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。//链表结点定义如下:struct ListNode {转载 2012-02-07 23:42:09 · 790 阅读 · 0 评论 -
void assert (int expression)
void assert (int expression);判定断言如果这个函数形式的宏的参数表达式等于0(例如,表达式值为false),一个消息将会写到标准错误设备并且调用abort,终止程序运行。显示的详细消息依赖于编译器的具体实现,但是它应该包括:断言失败时的表达式,源文件名称,断言失败出现时的行号。一个通常的格式是:Assertion failed: expressi转载 2012-08-07 17:14:28 · 767 阅读 · 0 评论 -
C语言中变量名的命名规则
C语言中变量名的命名规则 1、严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对继行则要求再缩进4格。例如: 2、提示信息字符串的位置 在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源转载 2012-07-24 21:05:13 · 12584 阅读 · 0 评论 -
C中const的 小结
CONSTconst是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C。 C中CONST的使用: 虽然这听起来很简单,但实转载 2012-07-25 09:17:46 · 720 阅读 · 0 评论 -
char 与 unsigned char的本质区别
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,转载 2012-07-25 13:56:04 · 482 阅读 · 0 评论 -
轻松掌握ISO8583报文协议.
我刚进入金融行业时,就知道了IS08583报文协议,我想可能我还没进入这个行业都已经听过了,可知ISO8583的影响力有多大了。最初刚接触它时,确实对其中的一些细节概念不是很清晰,对有些地方比较迷惑。鉴于此,我想很多同行也必然会经历同样得阶段,所以我写下本文,以便大家能够少走一些弯路。同时,我在网上(http://blog.csdn.net/lysheng/archive/2005/03/03/3转载 2012-07-30 12:40:49 · 862 阅读 · 0 评论 -
GNU C中的零长度数组
GNU C中的零长度数组 转载▼在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,如果你致力于编写可移植,或者是稍稍需要跨平台的代码,这些Trick最好还是收转载 2012-08-27 13:54:15 · 987 阅读 · 0 评论 -
预编译 整理
容收集自网络,仅供自己学习和大家交流之用,如果侵犯了您的权益,请及时通知,会及时撤下!预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了转载 2012-09-06 15:13:23 · 535 阅读 · 0 评论 -
CRC16校验 ---复制,查表法,用于高速通信校验
CRC16校验 ---复制,查表法,用于高速通信校验 (2011-08-25 20:45:07)转载▼ 前段时间用单片机做高速通信,在主机上增设人机界面,如果通信有出现错误的话,主机出现提示,但是有几次明显出错了。(我是做LED夜景的),灯光变化出现紊乱。但是为什么没有校验出来了,原来用单片机自带的校验也会出现丢失。 想想只能用起CRC校验,如果用CRC32转载 2012-10-16 20:20:25 · 7674 阅读 · 0 评论 -
CRC校验字节型算法查表法解读
CRC校验字节型算法查表法解读(备忘)本文本人很喜欢,系转载转自:http://blog.csdn.net/suding666/article/details/8078708,若转载对作者本人有侵犯,请作者及时与本人联系,定将删除。以下为转载: http://hi.baidu.com/zhangshe/blog/item/0805e95c2a649647fbf2c0f4.转载 2012-10-16 20:33:38 · 13949 阅读 · 0 评论 -
void 类型总结
2011-04-27 11:14 void 类型总结void 既可以修饰指针,也可以修饰函数返回值,还可以声明函数的参数 void指针类型ANSI新标准增加了一种“void”指针类型,即可以定义一个指针变量,但不指定它是指向哪一种类型数据。ANSI C使用类型void * (指向void的指针)代替char * 作为通用指针的类型。任何类型的指针都可以转换为void转载 2012-11-24 10:46:24 · 956 阅读 · 0 评论 -
函数指针和指针函数
函数指针和指针函数【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先转载 2012-04-20 13:34:09 · 442 阅读 · 0 评论 -
改进型冒泡排序
void bubble(int a[],int n){ int i,j,flag; int temp; for(i = 0; i { flag = 0; for(j = 0; j if(a[j] > a[j+1] { flag =转载 2012-05-03 17:20:04 · 518 阅读 · 0 评论 -
二维数组指针理解(论坛转载)
二维数组指针理解 int b[k], *q=0;//用指针要初始化! q = b; //指针q指向数组b的首地址 以后使用数组b的元素,比如b[?],均可用q[?]代替!(注:?表示某整数索引值) q = b+i;//此时指针q不再指向数组首地址,而是指向b[i]元素的地址 若要给b[i]元素更新值,可以: b[i] = ?; 或者 q[i] = ?转载 2012-02-12 12:16:43 · 982 阅读 · 0 评论 -
a和&a的区别
考察 a和&a的区别。 //代码如下#include void main( ) { int a[6]={1,2,3,4,5,6}; int *p=&a+1; printf("%d,%d\n",*(a+1),*(p-1)); } 输出结果:2,6。 为什么呢?因为数组名a是数组的首地址,即a为&a[0],而&a是数组的指针。当 “int原创 2012-02-07 20:14:12 · 417 阅读 · 0 评论 -
【转】C/C++中的联合体union及CPU大小端判定
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。首先看一段代码:View Code union myun { struct { int x; int y; int z; }u; int k; }a;转载 2012-02-11 23:55:17 · 501 阅读 · 0 评论 -
内存泄露检测详细分析
详细分析内存泄露检测 一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,使用完后必须显式释放的内存。C++中使用new和new[]实现从堆中分配到一块内存,使用完后,程序必须负责相应的调用delete或delete[]释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。下面4种内存泄露分类概括了常见的绝大部分的内存泄露的情形。 1. 常转载 2012-03-06 13:40:06 · 1142 阅读 · 0 评论 -
#ifdef /#if
#ifdef 头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: #ifndef #define ..转载 2012-03-07 14:05:43 · 506 阅读 · 0 评论 -
指向指针的指针
标 题: 彻底搞定C指针---指向指针的指针(转) 一. 回顾指针概念: 今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧! 当我们程序如下申明变量: short int i; char a; short int * pi; 程序会在内存某地址空间上为各变量开辟空间,如下图所示。 内存地址→6 7 8 9转载 2012-03-09 11:13:44 · 315 阅读 · 0 评论 -
C和C++格式化输入输出
C和C++格式化输入输出 一、printf()函数printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf(””, );其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以”%”开始, 后跟一个或几个规定转载 2012-03-28 14:16:18 · 12039 阅读 · 0 评论 -
linux yum命令详解
linux yum命令详解yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,转载 2012-03-13 21:23:08 · 355 阅读 · 0 评论 -
c语言中static 用法
c语言中static 用法static在c里面可以用来修饰变量,也可以用来修饰函数。先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆,不要弄混。int a ;int main(){ int b ; int c* = (int *)malloc(sizeof(int));}a是全局转载 2012-03-15 08:55:10 · 349 阅读 · 0 评论 -
va_start、va_end、va_list的使用
va_start、va_end、va_list的使用func( Type para1, Type para2, Type para3, ... ){ /****** Step 1 ******/ va_list ap; va_start( ap, para3 ); //一定要“...”之前的那个参数**ap指向para后的第一个可变参数。转载 2012-04-02 14:01:03 · 391 阅读 · 0 评论 -
Linux Socket编程(不限Linux)
Linux Socket编程(不限Linux)“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那转载 2012-03-22 14:48:48 · 450 阅读 · 0 评论 -
strcpy_s函数两个参数和三个参数
strcpy_s函数两个参数和三个参数 看名字明白,它和strcpy()函数的功能应该一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。这个函数用两个参数、三个参数都可以,只要可以保证缓冲转载 2012-03-22 21:57:52 · 2573 阅读 · 0 评论 -
sprintf介绍
sprintf很好用。下面就做一个介绍,作为笔记。 sprintf简介 2011-12-13 17:23:10本文编辑转载自:http://wenku.baidu.com/view/cab45163caaedd3383c4d331.htmlC语言的sprintf函数跟printf在用法上几乎一样,只是两者打印的目的地不同而已,前者打印到字符串中,后者则直接转载 2012-03-23 10:29:33 · 460 阅读 · 0 评论 -
C中的volatile用法
C中的volatile用法本文来自以下地址:http://www.cnblogs.com/chio/archive/2007/11/24/970632.htmlvolatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编转载 2013-03-19 18:30:28 · 664 阅读 · 0 评论