C语言
C语言
lee_u
这个作者很懒,什么都没留下…
展开
-
学好C语言需要的五本书
第一本 《C程序设计语言》Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。第二本 《C语言参考手册》即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考原创 2016-08-28 20:22:57 · 14010 阅读 · 2 评论 -
指针的大小
指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关,譬如以前是16为地址,指针即为2个字节,现在一般是32位系统,所以是4个字节,以后64位,则就为8个字节。在8位单片机下指针大小就是1个字节了。原创 2016-08-26 22:07:04 · 1011 阅读 · 0 评论 -
const的声明 指针
const int a;int const a;前两个的作用是一样,a 是一个常整型数const int *a;a 是一个指向常整型数的指针(整型数是不可修改的,但指针可以),这里const 修饰的是int,而int定义的是一个整值int * const a;a 是一个指向整型数的常指针(指针指向的整型数是可以修改的,但指针是不可修改的),这里const修饰原创 2016-08-28 16:32:38 · 506 阅读 · 0 评论 -
结构体大小的计算
先记着以下几个规则,尤其是第三个:字节对齐的细节和编译器实现相关,但一般而言,满足三个准则: 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要原创 2016-09-04 22:26:14 · 246 阅读 · 0 评论 -
关于char取值范围-128~127
浅析为什么char类型的范围是 —128~+127原创 2016-09-04 19:25:50 · 7975 阅读 · 0 评论 -
回调函数
对指针的应用是C语言编程的精髓所在,而回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。C语言回调函数typedef函数指针用法原创 2016-09-04 14:21:04 · 209 阅读 · 0 评论 -
如何判断CPU的大小端
int checkEnd(){int i=0x12345678;char *c=(char *)&i; return(*c==0x12)}返回值:大端返回1,小段返回0小端就是低位在前,大端就是高位在前原创 2016-08-28 15:13:48 · 562 阅读 · 0 评论 -
GetMemory函数的经典错误
void GetMemory( char *p ){ p = (char *) malloc( 100 );}void Test( void ) { char *str = NULL; GetMemory( str ); strcpy( str, "hello world" ); printf( “%s”,str );}结果会打印什么?解析:GetMemory错误讲解原创 2016-09-02 19:46:06 · 329 阅读 · 0 评论 -
内存泄漏
个人理解:内存泄漏就是内存泄漏了出来(泄漏的内存不能用),里面可用的空间就少了,而泄漏出来的内存就是你动态申请的内存在用完之后没有进行释放。原创 2016-09-02 20:06:24 · 215 阅读 · 0 评论 -
extern C 的作用
被extern "C"修饰的变量和函数是按照C语言方式进行编译和链接的,而不是c++,c++会加上参数去编译和链接原创 2016-09-01 23:09:01 · 224 阅读 · 0 评论 -
有符号变量(负数)与无符号变量(正数)的相加
原码, 反码, 补码 详解有符号变量与无符号变量的值的转换原创 2016-09-01 21:31:31 · 1917 阅读 · 0 评论 -
字符串常量指针、常量指针和指针常量区别
char *p = "abcd";*p = 'b';printf("%c\n", p[0]);以上代码有什么问题? 首先,编译器在常量区保存一个字符串abcd,其内容不许修改。char *p = "abcd"; // p是一个指针,直接指向常量区,修改p[0]就是修改常量区的内容,这是不允许的。char p[] = "abcd"; // 编译器在栈上创建一个字符原创 2016-08-30 23:34:30 · 5702 阅读 · 2 评论 -
简单C语言笔试题的整理
1.题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? for(i=0;i<4;i++) //三重循环 for(j=0;j<4;j++) for (k=0;k<4;k++) { if (i!=k&&i!=j&&j!=k) //i、j、k三位互不相同 printf("%d,%d,%d\n",i,j原创 2016-08-28 00:15:08 · 927 阅读 · 0 评论 -
sizeof 和 strlen用法
sizeof 和 strlen用法:char str[20]="0123456789"; int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。 int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响原创 2016-08-28 12:01:11 · 515 阅读 · 0 评论 -
操作符优先级
操作符优先级优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)原创 2016-08-29 21:13:02 · 368 阅读 · 0 评论 -
一个函数就能实现将正数变成对应的负数和将负数变成对应的正数
如何用一个函数就能实现将正数变成对应的负数,将负数变成对应的正数:int turn(int a) { a = ~a + 1;//正数取反加一后,得到负数的补码,负数是以补码的形式存在内存中,补码转为原码是就是正数要转化后对应的负数 return a;// 负数取反加一后,得到一个补码,但正数的补码原码一样} // 注意:取反和取反码是不同的两个概念原创 2016-09-07 17:46:51 · 16650 阅读 · 0 评论