C/C++
文章平均质量分 80
pfgmylove
这个作者很懒,什么都没留下…
展开
-
C语言内存分配问题和C语言中的内存
C语言内存分配问题1、C中内存分为四个区栈:用来存放函数的形参和函数内的局部变量。由编译器分配空间,在函数执行完后由编译器自动释放。 堆:用来存放由动态分配函数(如malloc)分配的空间。是由程序员自己手动分配的,并且必须由程序员使用free释放。如果忘记用free释放,会导致所分配的空间一直占着不放,导致内存泄露。 全局局:用来存放全局变量和静态变量。存在于程序的整个运行期间,是由编译器分转载 2008-11-03 19:45:00 · 23058 阅读 · 6 评论 -
C++基础知识sizeof用法 .
sizeof sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节。返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的头文件stddef.h的C++版本。他是一个和机器相关的unsigned类型,其大小足以保证内存中对象的大小。 1、什么是sizeof 首先看一下sizeof在ms转载 2011-12-05 17:31:11 · 619 阅读 · 0 评论 -
C++之static用法 .
static用法声明静态局部变量希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的储存单元不释放,在下一次该函数调用时,该变量保留上一次函数调用结束时的值.这时就应该指定该局部变量为静态局部变量.声明静态全局变量某些外部变量(全局变量)之限于被本文件引用,而不能被其他文件引用.声明静态数据成员静态数据成员在所有对象之外单独开辟空间静态数据成员不随对转载 2011-12-05 17:32:45 · 498 阅读 · 0 评论 -
C++学习--指针
指针(1)函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢? 如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。定义一个指向函数的指针用如下的形式,以上面的test()为例:int (*fp)(int a);//这里就定义了一个指向函数的指针函数指针不能绝对不能指向转载 2011-12-05 17:35:46 · 1022 阅读 · 0 评论 -
C++学习--虚函数表解析 .
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使转载 2011-12-05 17:37:09 · 461 阅读 · 0 评论 -
c++学习--memset用法详解
问题描述:int * cow = new int[n+1];memset(cow,0,(n+1)*4);将N+1个元素置成0,为什么不行memset是对一个字节的int4个字节,因此*4但是只能为0,其他例如1就不可以,详见最后一个例子memest原型 (please type "man memset" in your shell) void *memset(void转载 2011-12-05 17:38:20 · 741 阅读 · 0 评论 -
c++学习--C/C++常用函数
Strstr strncpy strcpy_s //VC6.0没有此函数 strcpy CString 转换 string CString 转换 char数组 String 转换 double转载 2011-12-05 17:39:25 · 1479 阅读 · 0 评论 -
JNI、C/C++、java调用dll、java与c数据类型对应关系
JNI中java类型与C/C++类型对应关系在如下情况下,需要在本地方法中应用java对象的引用,就会用到类型之间的转换: 1)java方法里面将参数传入本地方法;2)在本地方法里面创建java对象;3)在本地方法里面return结果给java程序。 分为如下两种情况: 一、Java原始类型像booleans、integers、floats等从Java转载 2011-12-08 11:53:38 · 4857 阅读 · 0 评论 -
int (*p)[4]等同于int *p[4]吗?
答:不等同。int *p[4]是一个指针数组,就是数组里面放的是指针。由于[]比*优先级更高,因此p先与[4]结合,形成p[4]形式,这显然是数组形式,它有4个元素,然后再与p前面的*结合,*表示此数组是指针类型的,每个数组元素(也就是一个指针变量)都可以指向一个整形变量。*p[4]是指针数组,他是数组。数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1] *p原创 2011-12-11 16:23:50 · 6063 阅读 · 3 评论 -
JNI的使用
一.系统环境 2二.JNI的简要使用例子 2三.JNI调用中考虑的问题 3四.JNI中对JAVA传入数据的处理 5五.JAVA调用本地接口后的数据处理问题 5六.JAVA中的一些小东西 5一.系统环境linux操作系统kernel2.4.2,安装j2sdk1.4.0二.JNI的简要使用例子下面是一个简单的例子实现打印一句话的功能,但是用的c的printf最终原创 2011-12-20 21:51:25 · 721 阅读 · 0 评论 -
C++类的继承与多重继承的访问控制
在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论。 对于单个类来说,讨论保护继承与私有继承的区别意义是不大的,他们的区别只在多级继承的情况中体现。 在这里我声明一下,对于此章节的内容不太适合用过多的文字进行描述,主要还是看例子,通过例子熟悉之间的关系,过多的文字描述会转载 2012-01-12 16:08:56 · 536 阅读 · 0 评论 -
[Android] Jni中C++和Java的数据类型的对应关系
Jni中C++和Java的参数传递如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子 JNI入门教程之HelloWorld篇SUN JNI Tutorial这 些资料的例子中,大多数只是输入一些简单的参数,获取没有参数。而在实原创 2011-12-08 11:32:02 · 10470 阅读 · 3 评论 -
C++标准库string类型
string类型支持长度可变的字符串,C++标准库将负责管理与存储与字符串相关的类容,以及提供各种有用的操作。标准库string类型的目的就是满足对字符串的一般应用。包含头文件[html] view plaincopy#includestring> 1.string对象的定义与初始化转载 2012-11-01 16:19:24 · 739 阅读 · 0 评论 -
通过socket接收数据并进行解析内存数据
以下是由Socket接收到数据,然后再对数据进行解析。 NormalText Code 12345678910111213141516171819202122232425262728293031323334353637原创 2011-12-16 21:07:59 · 3262 阅读 · 0 评论 -
内存读取以及内存对齐
C++ Code 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748原创 2011-12-13 17:50:47 · 710 阅读 · 0 评论 -
深入理解android中的常用类
C++ Code 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748转载 2012-11-09 15:23:58 · 2887 阅读 · 0 评论 -
彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则 .
对象的堆内存分配,指针数组和数组指针有关内存的说明 ! 一:关于指针和堆的内存分配先来介绍一下指针 :指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型就有大小,在达内的服务器上或者普通的PC机上,都是4个字节大小,里边只是存储了一个变量的地址而已。不管什么类型的指针,char * ,int * ,int (*) ,string转载 2011-12-05 17:07:35 · 471 阅读 · 0 评论 -
c++内存中字节对齐问题详解
c++内存中字节对齐问题详解 一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有转载 2011-11-30 17:08:55 · 391 阅读 · 0 评论 -
C语言难点分析整理
这篇文章主要是介绍一些在复习C语言的过程中笔者个人认为比较重点的地方,较好的掌握这些重点会使对C的运用更加得心应手。此外会包括一些细节、易错的地方。涉及的主要内容包括:变量的作用域和存储类别、函数、数组、字符串、指针、文件、链表等。一些最基本的概念在此就不多作解释了,仅希望能有只言片语给同是C语言初学者的学习和上机过程提供一点点的帮助。 变量作用域和存储类别:了解了基本的变量类型后,我们原创 2008-11-03 20:14:00 · 1001 阅读 · 0 评论 -
c语言内存操作函数汇总
一、malloc/calloc名称:Malloc/calloc功能: 动态内存分配函数头文件:#include .h>函数原形:void *malloc(size_t size);void *calloc(size_t num,size_t size);参数: size 分配内存块转载 2008-11-03 19:49:00 · 15972 阅读 · 2 评论 -
c语言中的回调函数
回调函数 程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。 声明函数指针 回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发现原创 2008-11-03 20:11:00 · 8793 阅读 · 0 评论 -
C语言中指针知识汇总
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)in原创 2008-11-02 18:06:00 · 1214 阅读 · 0 评论 -
C语言面试题汇总(华为公司)
C语言面试题总汇 4. static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是存在指向空值的指针。 8. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性9. 全局变量和局部原创 2008-11-02 18:12:00 · 16688 阅读 · 2 评论 -
一元多项式相加程序(C语言)
/* 2007-3-22 一元多项式的加法*/ # include # include # include typedef struct PolyNode{ int coef; int exp; struct PolyNode *next;}node; node *CreatePoly(void){ node *h,*tail,*s; int coe原创 2008-11-07 13:34:00 · 24040 阅读 · 8 评论 -
对遍历二叉树的更正
#include #include #include typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;int CreatBiTree(BiTree &T){ //先序遍历生成二叉树 char ch,temp; scanf("%c",&ch); temp=getch原创 2008-11-06 23:11:00 · 585 阅读 · 0 评论 -
菜鸟自学Linux之---掌握gcc和vi基本用法
编写程序可以用vi编辑器vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。 1、vi的基本概念 基转载 2008-11-19 09:08:00 · 637 阅读 · 0 评论 -
学生成绩管理系统源程序
/***********xuesheng.c***********//******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#include "string.h" /*字符串函数*/#include "conio.h" /*屏幕操作函数*/#include "mem.h"原创 2009-05-01 10:30:00 · 2693 阅读 · 0 评论 -
贪吃蛇源程序
#define N 200#include #include #include #define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct转载 2009-05-01 10:32:00 · 762 阅读 · 0 评论 -
对待拷贝构造函数和赋值函数的3种境界
对待拷贝构造函数和赋值函数有3种境界:不写;禁用;正确编写。 1) 不写。不写代码是编程的最高境界。有一种说法:最完美的代码是无以复减的代码。不写的代码永远不会出错,也不需要维护。任何存在的代码都需要维护,只要代码可能变化。 C++的编译器可以提供默认的构造函数、析构函数、拷贝构造函数、赋值函数、一对取址运算符(*, &)。C++的默认构造函数仅对内置变量随机赋值,具有不确定性,一般不转载 2011-11-22 21:03:06 · 511 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
C++拷贝构造函数(深拷贝,浅拷贝)对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include iostream>using namespace std;class CExample {pri转载 2011-11-22 20:56:08 · 505 阅读 · 0 评论 -
内存对齐,位段,大小端 .
1, 内存对齐为什么要讨论内存对齐问题呢?因为最近在写BMP头文件的时候出现了些问题,后来发现是结构体中内存对齐所致的。 当时情况如下:16 typedef struct17 {18 uint16_t identifier; 19 uint32_t file_size; 20 uint16_t reserved1; 21转载 2011-11-30 17:05:49 · 2667 阅读 · 0 评论 -
C++随记总结(1)----关于C++中的大小端、位段(惑位域)和内存对齐
听到好几个朋友说到去一些公司做面试,总是遇到关于大小端、位段(或者叫位域)和内存对齐的考题,然后就不知所措了。虽然我认为很多开发根本就用不到这个,但是我认为很有必要学习理解这些知识点,因为它可以让你更了解C++的,了解程序在内存的运行情况,也能加深对计算机系统的理解。 声明:由于本文的代码会受到计算机环境的影响,故在此说明本篇博文中的程序的运行环境。 1、Mi转载 2011-11-30 17:00:57 · 1280 阅读 · 0 评论 -
C/C++中的结构体对齐问题(内存对齐)
由于程序运行时占用的内存过大,所以想办法给程序瘦身。在调试中发现结构体占用的size竟然和预想的不一样,原来……看看下面讲的吧,肯定会不枉此看哦!1,比如:struct{ short a1; short a2; short a3;}A;struct{ long a1; short a2;}B;sizeof(A)=6,转载 2011-11-30 17:06:26 · 1015 阅读 · 0 评论 -
new operator、operator new 、placement new三者之间的区别与联系
new operator、operator new 、placement new三者之间的区别与联系1. new的执行过程:(1)通过operator new申请内存(2)使用placement new调用构造函数(简单类型忽略此步)(3)返回内存指针 2. new和malloc的比较:(1)new失败时会调用new_handler处理函数,malloc不会,失原创 2012-11-28 14:29:24 · 2920 阅读 · 0 评论