
C语言
文章平均质量分 63
猫已经找不回了
猫已经找不回了
展开
-
5分钟搞定内存字节对齐
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧. /******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?体系结构的对齐和不对齐,是在时间和空间原创 2009-04-16 14:15:00 · 94949 阅读 · 106 评论 -
一个很牛的求圆周率的6行代码
int a=10000,b,c=2800,d,e,f[2801],g; main(){ for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);} 很早以前找到过这段代码,感觉蛮牛的,转载 2009-05-13 19:26:00 · 3592 阅读 · 3 评论 -
头文件不宜定义变量原因解析
转自:http://hi.baidu.com/zengzhaonong/blog/item/8c10e90366c2bf733912bbb0.html http://blog.youkuaiyun.com/wzsbll/article/details/6655919转载 2011-07-28 10:09:12 · 3695 阅读 · 0 评论 -
排序——快速排序(QuickSort)
有些东西再不贴出来,以后可能再也找不到了。陆续整理曾写过的排序算法。 快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原理不多做介绍了,有需要可以看看这里:http://www.原创 2009-09-16 15:10:00 · 7611 阅读 · 7 评论 -
strcmp的实现原型
int __cdecl strcmp ( const char * src, const char * dst ) { int ret = 0 ;转载 2009-09-10 17:42:00 · 31965 阅读 · 2 评论 -
(转)关于volatile和原子操作研究的插曲
<br />链接地址:http://hi.baidu.com/chenzhuoyou/blog/item/ff65da1327a6c50a5aaf53e8.html<br /> <br />---------------------------------------------------------------------------------------------------------------------<br />所谓原子操作,就是"不可中断的一个或一系列操作" , 在确认一个操作是原子的转载 2010-10-08 16:46:00 · 1725 阅读 · 1 评论 -
(转)C/C++ 宏详解
众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换),那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。关于宏的一些语法问题,可以在google上找到。相信我,你对于宏的了解绝对没你想象的那么多。如果你还不知道#和##,也不知道prescan原创 2009-11-08 09:52:00 · 8598 阅读 · 5 评论 -
.h和.cpp文件的区别
关于头文件和源文件的分别首先,我们可以将所有东西都放在一个.cpp文件内.然后编译器就将这个.cpp编译成.obj,obj是什么东西?就是编译单元了.一个程序,可以由一个编译单元组成,也可以有多个编译单元组成. 如果你不想让你的源代码变得很难阅读的话,就请使用多个编译单元吧.(一个函数不能放到两个编译单元里面,但两个以上就可以分别放在一个单元,也就是cpp里面)转载 2009-10-10 11:20:00 · 16265 阅读 · 6 评论 -
(转)C语言中auto,register,static,const,volatile的区别
1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 (3)static 常见的两种用途: 1>统计函数被调用的次数;转载 2009-09-14 11:10:00 · 7312 阅读 · 2 评论 -
一道爱立信改自腾讯笔试题
已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。 记得腾讯有过这样一道题:1、请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句跟此处有点类似。 网上貌似答案蛮多的,这里随便给一个自己的想法。 void main(){ int a=6,b=5; int d[2]={b,a原创 2009-06-13 16:05:00 · 6298 阅读 · 12 评论 -
getch(),getche(),getchar()的区别 (综合转)
先说基本区别。 (1) getch()和getche()函数 这两个函数都是从键盘上读入一个字符。其调用格式为: getch(); getche(); 两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche() 函数却将读入的字符回显到显示屏幕上。 例1: #include main()转载 2009-05-08 21:22:00 · 36078 阅读 · 5 评论 -
堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是转载 2009-04-30 23:26:00 · 535550 阅读 · 181 评论 -
基础系列(关于实参,形参,以及指针)
这里讲讲《彻底搞定C指针》里面一个经典的例子。引出实参,形参和指针。 形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数. 实参:全称为"实际参数"是在调用时传递个该函数的参数. void Exchg1(int x, int y) { int tmp; tmp=x; x=y; y=tmp; pri原创 2009-05-03 13:10:00 · 14477 阅读 · 11 评论 -
自己实现atoi系列
atoi系列是字符跟数字之间转换常用的函数,其实自己实现也是挺快的,这里写一种带格式检测的atoi函数。函数说明atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(/0)才结束转换,并将结果返回。返回值返回转换后的整型数。 #includeint my_atoi(const char * str){ int原创 2009-05-03 01:15:00 · 10997 阅读 · 7 评论 -
关于指针的问题,有兴趣可以来看2分钟
今天看到有人问道一段代码,关于指针,觉得有点意思就发上我的注释,大家分析下,可以练练基本功。 struct S { int i; int *p; }; main() { S s; int *p=&s.i; //p指向s的首地址 p[0]=4; //处理s.i p[1]=3; //s.p =3s.p=p; //s.p指向s的首地址 s.原创 2009-04-28 21:39:00 · 3281 阅读 · 9 评论 -
string.h的strcmp的性能比较
string.h基于汇编实现strcmp ,和普通strcmp,针对循环调用次数和字符串查找长度2个纬度做了一次性能对比效测试。#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2014-01-14 15:27:20 · 10169 阅读 · 1 评论