摘要: 刚才看到自己曾经写的一段代码,名为“print_bit.c”的c文件。虽然已经想不起来是为何写它,但经分析可知源目的可能是想将一个int型的数按字节打印,顺便可以分析出系统是大端还是小端。代码如下:main(){ int p = 3; printf("*(&p):%x\t... 阅读全文
posted @ 2014-04-25 10:14 hold on dpfl ! 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。首先看一段代码:union myun{ struct { int x; int y; in... 阅读全文
posted @ 2014-04-18 10:48 hold on dpfl ! 阅读(818) 评论(0) 推荐(0) 编辑
摘要: 在C++代码里将C++函数声明为extern "C"(由上述分析(2)可知C语言不支持extern "C"声明),然后调用它(在你的C或者C++代码里调用)。例如://C++代码#include extern "C" int func(int a,int b); int func(int a, in... 阅读全文
posted @ 2014-04-17 10:43 hold on dpfl ! 阅读(198) 评论(0) 推荐(1) 编辑
摘要: 在C++中调用C函数要显示用extern “C”声明要调用的C文件中的函数,有如下两种方法:1、直接在C++中使用语句extern “C” f(int x, int y);注意:此时C++文件中不要包含C的头文件,这样会出现头文件里的声明和当前文件里面对同一函数的声明不相同。(注意C的头文件中是不会... 阅读全文
posted @ 2014-04-17 10:36 hold on dpfl ! 阅读(211) 评论(0) 推荐(0) 编辑
摘要: C++函数调用过程深入分析原文地址:http://blog.csdn.net/dongtingzhizi/article/details/6680050#reply0. 引言 函数调用的过程实际上也就是一个中断的过程,那么C++中到底是怎样实现一个函数的调用的呢?参数入栈、函数跳转、保护现场、回复现场等又是怎样实现的呢?本文将对函数调用的过程进行深入的分析和详细解释,并在VC 6.0环境下进行演示。分析不到位或者存在错误的地方请批评指正,请与作者联系。 首先对三个常用的寄存器做一下说明,EIP是指令指针,即指向下一条即将执行的指令的地址;EBP为基址指针,常用来指向栈底;ESP为栈指针... 阅读全文
posted @ 2013-11-30 19:00 hold on dpfl ! 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 1. 查看内核版本1)dpfl@ubuntu:~$ cat /proc/version Linux version 3.5.0-23-generic (buildd@akateko) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 UTC 20132)dpfl@ubuntu:~$ uname -a Linux ubuntu 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 U... 阅读全文
posted @ 2013-11-30 18:58 hold on dpfl ! 阅读(4652) 评论(0) 推荐(0) 编辑
摘要: 在以前的转帖中有详细的介绍过new/delete和malloc/free之间的区别,这里只是把我后来看书学到的一点关于new/delete的知识补充进来。 new/delete是运算符,而不是函数,实际上,当使用new表达式时,发送了3个步骤: (1)首先该表达式调用名为“operater new”的标准库函数,分配足够大的原始的未类型化的内存,以保存指定类型的一个对象; (2)接下来,运行该类型的一个构造函数,用指定初始化式构造对象; (3)最后,返回指向新分配并构造的对象的指针。 注意:与其他operator函数不同,operater new和operator delet没有... 阅读全文
posted @ 2013-09-02 10:16 hold on dpfl ! 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 前面已经深入了解过extern "C"了,下面进一步探讨一下extern “C”的使用方法。1、 C代码中包含extern “C”,C代码无法通过编译([1]中C++中调用C的方法1错误) 代码如下://C代码头文件CDemo.h#include #ifndef C_SRC_DEMO_H #define C_SRC_DEMO_H extern "C" int f(int x,int y);#endif // C_SRC_DEMO_H//C代码CDemo.c#include "CDemo.h"int f(int x,int y){ pr 阅读全文
posted @ 2013-08-29 14:21 hold on dpfl ! 阅读(1308) 评论(2) 推荐(1) 编辑
摘要: 前段时间有人给我发了一篇如何在C中调用C++函数的文章链接,我当时就想,我连如何在C++中调用C都不明白,还谈什么C中调用C++。不过我还是初略的看了一遍这篇文章,并从中了解到一个很有用的关键字:extern "C";后来我又查找如何在C++中调用C函数,里面也用到了extern “C”,所以我想要弄明白C和C++的相互调用,那就应该首先弄明白extern “C”。所以我到看了些博文,然后在前人的指引下,进行了一些实验,把实验结果和我的理解记录如下。 大多数跟这个有关的博文都有类似如下的一段话,这段话对了解C++有一个很好的前导作用,故而依葫芦画瓢抄录下来: C++语言之父 阅读全文
posted @ 2013-08-29 13:51 hold on dpfl ! 阅读(3116) 评论(0) 推荐(1) 编辑
摘要: 我一直弄不清楚”指针数组“和”数组指针“的区别,最近这段时间看到了一些关于数组和指针的关联和区别的资料,然后总结了下这两个概念的区别,以备后续查看。1、区分指针数组和数组指针 short *ptr[10]; //指针数组,可理解为:存放指针的数组 short (*ptr1)[10]; //... 阅读全文
posted @ 2013-08-26 17:04 hold on dpfl ! 阅读(176) 评论(0) 推荐(0) 编辑