c语言那些事儿
文章平均质量分 70
tony821224
这个作者很懒,什么都没留下…
展开
-
想成为嵌入式程序员应知道的0x10个基本问题
这是嵌入式C程序员的基本知识。作者在Embedded Systems Programming杂志上发表了很多嵌入式系统开发方面的文章。作者:Jones Nigel 更新日期:2005-07-21 C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压原创 2007-09-04 15:40:00 · 641 阅读 · 0 评论 -
释放对象数组:delete与delete[]
<>练习 14.11 中提到: Account *parray=new Account[100]; delete parray; delete [] parray; 方括号的存在会使编译器获取数组大小(size)然后析构函数再被依次应用在每个元素上,一共size次。否则,只有一个元素被析构。 无论哪种情况,分配的全部空间被返还给自由存储区。 我的原创 2010-02-22 15:29:00 · 1025 阅读 · 0 评论 -
C语言经典问答
1.这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量) 的初始式中。因为静态变量的地址必须在编译的过程中就确定下来而malloc()申请的内存地址是在运行时确定的。2. *p++ 自增p 还是p 所指向的变量?答:后缀++ 和-- 操作符本质上比前缀一目操作原创 2010-03-01 13:51:00 · 568 阅读 · 0 评论 -
main主函数执行完毕后,是否可能会再执行一段代码?
main主函数执行完毕后,是否可能会再执行一段代码?先看代码,代码为王! #include #include int fn1(void), fn2(void), fn3(void), fn4 (void); void main( void ) { _o转载 2010-03-18 11:20:00 · 1356 阅读 · 0 评论 -
结构体知识汇总
文章来源:http://blog.csdn.net/gnuhpc/archive/2009/06/28/4304124.aspx 一、结构体与函数参数结构体作函数参数可分为传值与传指针。1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数。在这种情况下,由于涉及到结构体参数的拷贝,程序空间及时间效率都会受到影响转载 2010-01-11 12:18:00 · 657 阅读 · 0 评论 -
C语言字节对齐
<br /><br />C语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。结构体到底怎样对齐?下面总结了对齐原则,在没有#pragma pack宏的情况下:<br />原则1、普通数据成员对齐规则:第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。<br />原则2、结构体成员对齐规则:如果一个结构里有某些结构体成员,则该结构体成员要从其内部最大元素大小的整数倍地址开始存储。(stru原创 2011-06-02 16:20:00 · 930 阅读 · 0 评论 -
Valgrind--Linux下的内存调试和代码解剖工具
Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固。转载 2011-06-04 14:27:00 · 709 阅读 · 0 评论 -
使用 GDB 调试多进程程序(IBM developerWork)
GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统:进程 Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用 GDB 调试 proc2 或者 proc3 呢?实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如转载 2011-06-04 14:50:00 · 697 阅读 · 0 评论 -
gdb Core Dump 调试程序错误
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制--------------------------------- 1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。转载 2011-06-04 12:06:00 · 1972 阅读 · 0 评论 -
GDB高级技巧
文章来源:http://blog.csdn.net/ruixj/archive/2010/06/27/5698270.aspx 本文主要示例一些平常较少使用到的GDB功能,掌握这些用法有助于提高GDB调试和解决问题的能力。 1) 查看宏 默认情况下,在GDB中是不能查看宏的值及定义的,但通过如下方法,则可以达到目的: 编译源代码时,加上“-g3 -gdwarf-2”选项,请注意不是“-g”转载 2011-06-04 12:08:00 · 684 阅读 · 0 评论 -
C/C++头文件一览
C及传统C++#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出#include //数据流输入/输出#include //定义各种数据类型最值常量#include //定义转载 2010-01-23 08:41:00 · 329 阅读 · 0 评论 -
教你理解复杂的C/C++声明
陆其明 译 原文: http://www.codeproject.com/cpp/complex_declarations.asp 作者:Vikram A Punathambekar 介绍 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明:我们将从每天都能碰到的较简单的声明入手,转载 2010-01-23 08:40:00 · 336 阅读 · 0 评论 -
MFC程序的生死因果
程序的诞生:■ Application object 产生,内存于是获得配置,初值亦设立了。■ Afx WinMain 执行AfxWinInit,后者又调用AfxInitThread,把消息队列尽量加大到96。■ Afx WinMain 执行InitApplication。这是CWinApp 的虚拟函数,但我们通常不改写它。■ AfxWinMain 执行InitInsta原创 2009-09-27 22:50:00 · 1142 阅读 · 0 评论 -
可重入函数与不可重入函数
主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。也可以这样理解,重入即表示重复进入,首先它意味着这个函数转载 2007-09-04 16:03:00 · 1251 阅读 · 0 评论 -
VC中常用数据类型转换
文章来源:http://blog.csdn.net/nana_tubi/archive/2004/10/05/125626.aspx刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明 int i = 100;long l = 2001;float f=300.2;double d=12345.119;char us转载 2007-09-07 21:04:00 · 718 阅读 · 0 评论 -
C++ 堆、栈及静态数据区详解
五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,原创 2008-02-14 16:20:00 · 629 阅读 · 0 评论 -
采用IC传感器的相对湿度测量
采用IC传感器的相对湿度测量 谢长江 尤丽华 摘要:在比较各种相对湿度测量方法及传感器的基础上,结合实例介绍了集成湿度传感器的特性及使用方法,指出使用条件的影响因素及补偿途径,给出了带有温度效应补偿作用的相对湿度检测具体实现线路,并提供了检测软件计算的具体表达转载 2007-12-01 21:34:00 · 2821 阅读 · 0 评论 -
对张孝祥C语言试题其中一题的探讨 (转载)
当《绝对能够测试你的C语言功力的几个问题》第一次出现在CSDN首页时,我就进入了张老师Blog。客观上说,出的题目比较基础,但每一题都说出一个所以然来,恐怕不是很简单。过了几天就贴出了《语言测试题的讲解分析》,我怀着好奇的心情进去看了看。发现里面赞扬的也有,诋毁的也有。韩愈《师说》里面讲过:闻道有先后,术业有专攻。张老师自然有他的可取之处,也有不知道的知识点。 OK,言归正转,现在转载 2008-01-18 18:31:00 · 660 阅读 · 0 评论 -
ACM学习网站
ACM学习网站同济大学的 Online Judge -http://acm.tongji.edu.cn/ 浙江大学的 Online Judge -http://acm.zju.edu.cn/ 北京大学的 Online Judge -http://acm.pku.edu.cn/ 吉林大学的 Online Judge -http://acm.jlu.edu.cn/ 四川大学的 Online Jud原创 2008-04-30 21:31:00 · 1243 阅读 · 0 评论 -
C--如何定义复杂的类型声明
Even relatively new C programmers have no trouble reading simple C declarations such asint foo[5]; // foo is an array of 5 intschar *foo; // foo is a pointer to chardouble foo转载 2008-09-26 14:30:00 · 799 阅读 · 1 评论 -
#pragma是什么意思
文章来源:http://xingzhesun.blogbus.com/logs/3889324.html这是一个编译控制指令,可以在编译时动态地调整编译选项,这种指令在不同的编译系统中是不同的。 #pragma warning(disable 4068)的意思是不显示4068号警告信息,如果编译时总是出现4068号警告,而认为肯定不会有错误,可以使用这条指令。这条指令C++ Builder和VC+原创 2008-10-07 17:31:00 · 1711 阅读 · 1 评论 -
友元函数和友元类
文章来源 : http://www.cppblog.com/twzheng/articles/21020.html : http://blog.chinaunix.net/u/15586/showart_257912.html 友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公转载 2009-08-24 11:43:00 · 392 阅读 · 0 评论 -
tony之C语言的那些事儿---C语言运算符优先级
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名 [ 常量表达式 ]左到右 ()圆括号(表达式) / 函数名 ( 形参表 ) .成员选择(对象)对象 . 成员名 ->成员选择(指针)对象指针 -> 成员名 2-负号运算符- 表达式右到左单目运算符( 类型 )强制类型转换( 数据类型 ) 表达式 ++自增运算符++ 变量名 / 变量名 ++单目运算符--自减运算符-- 变量名 / 变量原创 2010-03-18 10:50:00 · 502 阅读 · 0 评论