
C语言学习
文章平均质量分 76
vividly1990
会做饭的工程师!
展开
-
strlen和sizeof的区别
首先应该明确的概念是sizeof是操作符,而不是函数。strlen是一个函数。sizeof操作符返回的是参数所占的内存数,而strlen函数返回的是参数的字符数长度,不是所占用的内存的大小。需要注意的是strlen函数的参数是字符串,并且必须以串结束符“\0”结尾。比如说:char str[8] = "fdsa";sizeof(str) = 8字节 //字符数组str所占用的内存原创 2013-04-09 20:52:56 · 736 阅读 · 0 评论 -
10 Tips to make Your C Program Effective
The beauty of any code lies not only in finding the solution to a given problem but is in its simplicity, effectiveness, compactness and efficiency( memory ). Designing the code is harder than actuall原创 2013-06-21 14:53:29 · 739 阅读 · 0 评论 -
巧用 C 语言的位运算
在C语言编程中,我们常常能用到一些位运算来代替常规的一些运算。因为在多数情况下位运算的效率会高于普通的运算。例如用右移一位带代替除以2。下面介绍一些常用的位运算技巧。位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。C语言提供的位运算符列表原创 2013-06-02 20:25:58 · 897 阅读 · 0 评论 -
setjmp和longjmp函数
先看一道sony中国的笔试题:#include#includestatic jmp_buf buf;int main(){ volatile int b; b = 3; if(setjmp(buf)!= 0 ) { printf("%d\n",b); exit(0); } b = 5; longjmp(buf,1);}非局部跳转语句---setjm原创 2013-05-16 10:06:44 · 695 阅读 · 0 评论 -
关于const
const是C语言中的一个常量修饰符,就是说它修饰的对象为常量。如果想阻止一个变量被改变,那么可以选择使用const关键字。在为一个变量加上const修饰符的同时,通常需要对它进行初始化,在之后的程序中就不能再去改变它。 接下来介绍const修饰符的几种使用方法。1,const修饰符在函数体内修饰局部变量。const int a;int const a;const int *a;原创 2013-04-18 17:12:56 · 744 阅读 · 0 评论 -
C中进程的内存分配
堆和栈的比较:1,申请方式 stack: 由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间。 heap: 需要程序员自己申请,并指明大小,在C中malloc函数,C++中是new运算符。 如p1 = (char *)malloc(10); p1 = new char[10]; 如p2 = (char *)malloc(10);原创 2013-04-13 16:53:32 · 1311 阅读 · 0 评论 -
你所不知道的main函数
今天和朋友聊天,他突然问道,你知道main函数能调用自身吗?我想了想,觉得main函数作为主函数,应该是不能自身的调用的,不然可能陷入死循环,他接着问,那其他函数能调用main函数么,我回答也是不行的。事实证明我都错了。下面先看一段有意思的程序,一个简洁有趣的打印菱形的程序。int line = 1;int main(){ printf("%*s\n",7-(line>4?lin原创 2013-04-13 22:00:53 · 1514 阅读 · 0 评论 -
指针和字符串之间的关系
在C语言中可以用2种方式来定义和访问一个字符串,一种是数组,一种是指针。首先先看一段代码:#includeint main(){ char *str = "hello world!"; *(str+6) = 'B'; printf("%s\n",str); return 0;}这段代码在编译的时候不会出现任何的问题,但是运行的时候就直接崩溃了原创 2013-04-10 16:55:54 · 1315 阅读 · 0 评论 -
在C++程序中如何调用C程序
问题:在C++程序中如何调用被C编译器编译后的函数首先需要明确的是C++支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型是void foo(int x, int y)。该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。C++提供了一个C 连接交换指定符号extern“C”来解决这原创 2013-04-11 10:47:59 · 1029 阅读 · 0 评论 -
fread 和 read
coding的时候看到有的地方用fread,有的地方用read。下面总结一下俩者的区别。read(由已打开的文件读取数据)包含头文件:#includessize_t read(int fd,void * buf ,size_t count);函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作原创 2014-03-30 11:15:33 · 834 阅读 · 0 评论