![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C 语言
读书与远方
这个作者很懒,什么都没留下…
展开
-
变量的存储分配与作用域
1.变量的数据类型和存储类型在C语言中,每一个变量都有两个属性:数据类型和存储类型。数据类型即常说的字符型、整型、浮点型;存储类型则指变量在内存中的存储方式,它决定了变量的作用域和生存期。变量的存储类型有以下四种:auto(自动)、register(寄存器)、extern(外部)和static(静态)。其中auto和register用于声明内部变量,auto变量是存储在栈中原创 2013-10-31 11:06:24 · 860 阅读 · 0 评论 -
大小端转换
BIG-ENDIAN(大字节序、高字节序)LITTLE-ENDIAN(小字节序、低字节序)主机字节序网络字节顺序JAVA字节序1.BIG-ENDIAN、LITTLE-ENDIAN跟多字节类型的数据有关的比如int,short,long型,而对单字节数据byte却没有影响。BIG-ENDIAN就是低位字节排放在内存的低端,高位字节排放在内存的高端。而LITTLE-ENDIAN原创 2013-12-12 09:56:07 · 2042 阅读 · 0 评论 -
内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区
一.在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放原创 2013-12-12 10:16:15 · 691 阅读 · 0 评论 -
HOG 梯度直方图特征
有关行人的智能检测,近年来可谓是一个热门话题。日益流行的“智慧城市”的设想中,行人检测也可以应用在例如智能交通、安防等事业中。来自法国的研究人员Navneet Dalal等软件高手在2005年首次提出了HOG,即梯度直方图特征。并以线性SVM作为分类器训练大量样本。在他们大量的实验后证明,这样的研发成品可以很好得实现行人检测。 令人欣喜的是,强大的计算机视觉库OPENCV中现在已经有了HOG原创 2013-12-12 10:16:19 · 1658 阅读 · 0 评论 -
Vs 2008 对 OpenMP 的 支持 以及 OpenMP的环境变量及库函数
Visual C++® 2008对OpenMP的支持 VC++2008根据项目属性配置的指示进行 /openmp编译器切换,当配置了OpenMP支持后,编译器会提供_OPENMP定义,可以使用#ifdef _OPENMP来决定程序使用或者不使用OpenMP。配置VC++2008项目,在project的property页面上的C/C++ -> Language 选项卡原创 2013-12-13 09:14:51 · 1702 阅读 · 0 评论 -
OpenMP
1 简介www.openmp.orgGNU的gomp项目;Include ;编译参数-fopenmp打开openmp,如果使用-lgomp则编译成单线程版本;条件编译 #ifdef _OPENMP声明并行区,由编译器和运行时库确定线程的创建、终止、调度和数量,并行区结束后线程挂起等待进入下一并行区;Intel编译器的OMP开关,关上时将编译成非并行代码,-Qo原创 2013-12-13 09:11:47 · 930 阅读 · 0 评论 -
OpenMP并行程序设计
1、fork/join并行执行模式的概念2、OpenMP指令和库函数介绍3、parallel 指令的用法4、for指令的使用方法5 sections和section指令的用法1、fork/join并行执行模式的概念OpenMP是一个编译器指令和库函数的集合,主要是为共享式存储计算机上的并行程序设计使用的。前面一篇文章中已经试用了Ope原创 2013-12-13 09:15:54 · 1468 阅读 · 0 评论 -
OpenMP与C++:事半功倍地获得多线程的好处
来源:IIEEG01-28-2011 在并行计算领域有一个广为流传的笑话——并行计算是未来之事并且永远都是。这个小笑话几十年来一直都是对的。一种类似的观点在计算机架构社区中流传,处理器时钟速度的极限似乎近在眼前,但时钟速度却一直在加快。多核革命是并行社区的乐观和架构社区的悲观的冲突。 现在主流的CPU厂商开始从追求时钟频率转移到通过多核处理器来增加并行支持。原因很简单:把多个CPU原创 2013-12-13 09:17:18 · 1128 阅读 · 0 评论 -
java 调用C写的DLL
检举|2012-07-09 13:37 提问者悬赏:50分|linzongmao|分类:JAVA相关| 浏览614次int WINAPI OpenDevice(HANDLE *hDevice, WCHAR *name);请问,这是DLL中的函数,如何在JAVA中调用这个函数?扫描二维码下载下载知道APP10分钟有问必答!原创 2013-12-13 09:19:17 · 750 阅读 · 0 评论 -
C程序编译过程
E:现在我们看一下C 的编译过程..预编译,编译生成汇编,汇编生成目标文件,目标文件连接库文件生成可执行文件,这个过程人人都知道,但是究竟如何呢?牢骚一下:太多的编译器都是一步到位,其实这对学习不是什么好事情,至少我觉得,在学习过程中把简单的东西弄的麻烦,在工作的过程中把麻烦的东西弄的简单。这里的例子选自 lorne预编译 gcc -E编译 gcc -S 这原创 2013-12-20 22:04:35 · 762 阅读 · 1 评论 -
C++ const 指针
C++ const 指针 很久没写BLOG了,不知道还有没有人对这里有兴趣,呵~const在面试的时候考得多,特地小结一下。1,const是修饰符,它表示某个对象是常量,即不能修改,而C++没能彻底抛弃指针这个C留下的遗产而有些尴尬,指针是比较圆滑的家伙,它有双重身份,有时表示它自己,有时表示它所指的对象(所以C++建议我们尽量用引用而不是指针)const原创 2013-12-20 22:03:55 · 768 阅读 · 0 评论 -
空指针
指针为C语言编程提供了强大的支持——如果你能正确而灵活地利用指针,你就可以直接切入问题的核心,或者将程序分割成一个个片断。一个很好地利用了指针的程序会非常高效、简洁和精致。利用指针你可以将数据写入内存中的任意位置,但是,一旦你的程序中有一个野指针("wild”pointer),即指向一个错误位置的指针,你的数据就危险了——存放在堆中的数据可能会被破坏,用来管理堆的数据结构也可能会被破坏,甚原创 2013-12-20 22:04:58 · 1678 阅读 · 0 评论 -
Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1) 错误 解决方案(android-ndk)
分类: JNI2013-05-07 19:42 5301人阅读 评论(0) 收藏 举报在android里做ndk编程的时候,碰到个随机性错误错误信息如下:05-06 15:59:44.411: A/libc(3347): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)05-06 15:59:44.911: I/DEBUG(3原创 2013-12-23 16:51:53 · 1320 阅读 · 0 评论 -
从 C/C++ 程序调用 Java 代码
011-10-26 16:57 2157人阅读 评论(6) 收藏 举报javajnijvmpathc语言JNI允许您从本机代码内调用 Java 类方法。要做到这一点,通常必须使用 Invocation API 在本机代码内创建和初始化一个 JVM。下列是您可能决定从 C/C++ 代码调用Java 代码的典型情况: 1.希望实现的这部分代码是平台无关的,它将用于跨多原创 2014-03-02 10:49:03 · 873 阅读 · 0 评论 -
解决bin/sublime.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform问题
分类: J2ME Java2011-05-31 08:27 17018人阅读 评论(5) 收藏 举报虚拟机eclipse平台c错误:java.lang.UnsatisfiedLinkError: C:/WTK2.5.2_01/bin/sublime.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform问题所在原创 2014-03-02 10:49:11 · 2259 阅读 · 0 评论 -
变量和内存分配
无论用什么语言编制的程序,都是为让计算机完成某一特定功能而编写的文本文件。这些文本文件是不能直接在机器上运行的,它们必须经过系统软件(包括编辑器和编译器)的输入并编译或汇编后,转换成二进制的可执行代码,才是计算机可以识别的机器语言。此时,程序就是一个包含二进制可执行代码文件的模块。当内核把二进制的可执行代码装入内存后,它由三部分组成:代码段、数据段、堆栈段。在线性地址的低地址字段是代码段,存放程序原创 2013-11-15 13:04:35 · 1023 阅读 · 0 评论 -
C语言实现 二分查找 支持降序和升序
// Test2.cpp : Defines the entry point for the console application.//#include "stdafx.h"#define N 5/** 对降序数组进行二分查找*/int main(int argc, char* argv[]){int a[N];int i,k;int原创 2013-11-27 23:18:48 · 3371 阅读 · 0 评论 -
32位机和64位机编程时应该注意些什么
|字号 订阅1.数据类型在各种机器中所占的字节数不同16位平台char 1个字节8位short 2个字节16位int 2个字节16位long 4个字节32位指针 2个字节32位平台char 1个字节8位原创 2013-11-27 14:24:40 · 585 阅读 · 0 评论 -
变量的作用域与存储分配
1.变量的数据类型和存储类型在C语言中,每一个变量都有两个属性:数据类型和存储类型。数据类型即常说的字符型、整型、浮点型;存储类型则指变量在内存中的存储方式,它决定了变量的作用域和生存期。变量的存储类型有以下四种:auto(自动)、register(寄存器)、extern(外部)和static(静态)。其中auto和register用于声明内部变量,auto变量是存储在栈中的,原创 2013-11-15 13:04:04 · 725 阅读 · 0 评论 -
C语言之正确使用const
const指针和普通指针的区别举个例子说下: int i=39; const int *p=&i,表示不能通过指针p来改变i的值,*p=20//错,p=&j//正确 int *const p=&i,表示p只能指向i,不能指向其他变量,但是可以通过p来改变i的值.*p=30//正确,但是p=&j//错 const int原创 2013-11-15 13:04:41 · 721 阅读 · 0 评论 -
c/C++内存分配
c/C++内存分配一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似原创 2013-11-17 12:57:02 · 570 阅读 · 0 评论 -
关于查找子串在父串中的位置的功能的实现
//////////////////////////////////////////////////////////////////////////TITLE:查找子串在父串中的位置的功能的实现(c/c++)//AUTHOR:没有风//DATE:2007/11/16///////////////////////////////////////////////////////////原创 2013-11-17 12:57:06 · 1442 阅读 · 0 评论 -
申请三维数组
struct st{int icent;double dcent;};void main(){ int v1=4,v2=4,v3=4;int i,j,k;struct st ****p=new struct st***[v1];for(i=0;i{p[i]=new st**[v2]; //这里应该是你不慎输入错了吧for(j=0;原创 2013-11-17 12:57:15 · 721 阅读 · 0 评论 -
sprintf()和strcat()比较
在C语言的环境下在使用sprintf()和strcat()这两个函数时,真是让我吃透了苦头了。首先,strcat()函数在对字符操作时,有很多的要求,例如,函数的第一个参数,不能为空指针;两个参数的类型不能分别为char*和char[],虽然在C++中,对于这两种类型的使用几乎等同,可是对于这个函数,是不等同的,所以必须要一致。然后来看看sprintf()函数,今天第一次使原创 2013-11-17 12:57:35 · 4965 阅读 · 0 评论 -
问c语言库函数strcpy、strcat、sprintf、vsprintf、gets、scanf、getc、fgetc、getchar哪些有缓冲区溢出
strcpy是将原地址的字符拷贝到目标地址空间,程序内部没有检查目标空间是否可以完全容纳原字符串的大小,所以会溢出。这个要求函数调用者保证目标空间足够大、strcat是将字符追加在原来字符串的后面,也没有检查原地址空间的大小,所以会溢出。该函数要求调用者清楚源地址空间足够容纳要追加的字符串、sprintf、vsprintf是将字符串格式化给一个地址空间,但是没有检查该地址空间是都能够完全容纳格原创 2013-11-17 12:57:39 · 1302 阅读 · 0 评论 -
用 C 语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址
作者:zhoulifa来源:http://bbs.chinaunix.net/viewthread.php?tid=821361可能大家经常要去互联网上搜索特定的内容,比如收集大量邮件地址,如果用 google 之类的搜索引擎是没法实现这种特定功能的,所以用 C 语言来写一个吧。它的功能就是不断去取得网络上的页面,然后分析出网页上出现的邮件地址保存下来。象个蜘蛛一样,从网络上一个网页爬原创 2013-11-04 08:42:49 · 3830 阅读 · 0 评论 -
俄罗斯方块 C++ 源代码实现
第一个Cpp#include #include #include#include #include #pragmacomment(lib,"winmm.lib") //播放背景音乐的头文件#include "colorConsole.h"#include#define SQUARE_COLORBACKGROUD_BLUE|BACKGROUD_RED原创 2013-11-25 10:31:57 · 2307 阅读 · 0 评论 -
扫雷 MFC实现
1. 1. 游戏实现 扫雷,是附带在Window里面的游戏,是个简单的游戏。因此我们就从扫雷开始我们的游戏旅程。很多人都玩过这个游戏,只是不知道怎么用程序实现。不过还有人不知道怎么玩,下面就先说说游戏的规则: ● 开始:按左键开始游戏,按按钮或菜单重新开始。● 左键:按下时,是雷则结束,非雷则显示数字。● 数字:代表此数字周围一圈八原创 2013-11-25 10:33:04 · 4565 阅读 · 1 评论 -
怎样获得虚函数指针
先还是看看下面的代码: #include using namespace std; class A{private: int a; int b;public: virtual void vfun0() { cout "A::vfun0"原创 2013-11-27 14:13:56 · 595 阅读 · 0 评论 -
深入浅出C++虚函数表
为什么要了解虚函数表了解虚函数表对理解C++实现多态的机制会有更深的了解,对对象的内存布局会有更好的认识。 验证虚函数表的存在(C++中的struct和class实际上是一样的)C++中当一个类中存在virtual函数(虚函数)或者它的父类中存在虚函数,那么编译器就会为这个类生成虚函数表(virtual table),下面我用代码来验证这个事情。首先写一个classcl原创 2013-11-27 14:16:05 · 606 阅读 · 0 评论 -
C++中的虚函数总结
对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了 这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一原创 2013-11-27 14:16:53 · 757 阅读 · 0 评论 -
C++虚析构函数、虚函数结合考题变种
虚析构函数、虚函数结合考题变种 1.[Effective c++原则07]:为多态基类声明virtual 析构函数。 [如果不]: 如果不声明为析构函数,可能出现的结果如下:Derived对象的成分没有被销毁,形成资源泄露、在调试上会浪费很长时间。 class CSimpleClass{public:CSimpleClass(){ cout ~CSimpleCla原创 2013-11-27 14:23:35 · 713 阅读 · 0 评论 -
宏定义中的‘#’、‘##’操作符和‘...’、‘ __变参__ ’
一、‘#’ 在宏函数的替换部分,#符号用作一个预处理运算符,它可以把参数的实际值转换成字符串。例如: 如果‘甲’是一个宏参数,那么‘#甲’就是一个字符串,表示实际参数值的名字串,即把实际参数名转化成相应的字符串。该过程称为参数字符串化.代码如下: #包含 “习语言系统.接口” #定义 平方(x) 格式输出(#x "的平方是 %整。%行",(x)*(x)) 整原创 2014-03-27 13:55:31 · 799 阅读 · 0 评论