
编程语言
文章平均质量分 76
jjjyu123
这个作者很懒,什么都没留下…
展开
-
指针和数组
一.指针数组和数组指针数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数转载 2013-09-07 01:09:04 · 608 阅读 · 0 评论 -
结构体成员寻址宏定义
#define OFFSETOF(type, field) ((size_t)&(((type *)0)->field))(type *)0:把0地址当成type类型的指针。((type *)0)->field:对应域的变量。&((type *)0)->field:取该变量的地址,其实就等于该域相对于0地址的偏移量。(size_t)&(((type *)0)->f转载 2013-11-10 11:01:57 · 1914 阅读 · 0 评论 -
java和C++面向对象比较
打开《Java 核心技术》第一卷的第4章:对象和类,第5章:继承,第6章:接口和内部类。洋洋洒洒近150页,几乎集中了Java中面向对象语法的全部。不过凭借我在C++中浸淫这么多年的深厚功力,看起来还是相当轻松的:)这句话无疑是吹牛了,学习C++久了,我想人应该变得越来越谦虚才对。不过我还是提倡在枯燥的学习中多给自己一点自吹自擂的骄傲吧:)简单的封装: 面向对象最基本的单元就转载 2013-11-19 13:39:02 · 789 阅读 · 0 评论 -
vs编译器设置
因为长期进行C++编码,忽视了VS中文件编译器的设置问题,这两天要使用到之前下载的C编码的工程,预想打算改为C++编译。遇到问题总结如下。归根结底还是对vs使用的不熟练。1.在VS2008中 对于某个代码文件,是以C++编译器编译,还是以C编译器编译 与文件本身的后缀是.cpp 还是.c无关。主要按优先级依次取决于以下两项配置 一是工程本身的编译器设置,见工程属性转载 2013-11-18 21:51:20 · 6430 阅读 · 0 评论 -
C运行时库(C Run-time Library)详解
一、什么是C运行时库1)C运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritchie 和 Brian Kernighan 就用 C 本转载 2013-10-29 17:20:26 · 690 阅读 · 0 评论 -
C语言的反汇编
先贴一个寄存器的表格:寄存器用途EAX,EBX,EDX,ECX通用寄存器,由程序员自己指定用途,也有一些不成文的用法:EAX:常用于运算。EBX:常用于地址索引。ECX:常用于计数。EDX:常用于数据传递。EIP指令寄存器,指出当前指令所在的地址。ESP转载 2013-09-12 16:49:53 · 1596 阅读 · 0 评论 -
C语言中的位运算
在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。C语言中的位运算 在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操转载 2013-09-06 11:11:48 · 635 阅读 · 0 评论 -
指针和引用遇到的两个问题
指针的初始化: int i=0; int *p=&i; //ok int *p=null; p=&i;//ok int *p=null; *p=i;//error反汇编*p=i这句话: *p=i;00F013AA mov eax,dword ptr [p] 00F013AD mov ecx,dword ptr原创 2013-09-13 00:31:38 · 639 阅读 · 0 评论 -
传值 ,传指针,传引用三种调用方式的反汇编
代码:#includeusing namespace std;int AddTwoNumber(int a,int b=8);//设置形参默认值int AddTwoNumber(int *,int *);int AddTwoNum(int &,int &);int main(){ int a=2, b=8; int result = AddTwoNumber转载 2013-09-12 23:16:22 · 847 阅读 · 0 评论 -
C语言内存分布详解
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)— 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)转载 2013-09-06 01:01:47 · 869 阅读 · 0 评论 -
C语言的字节对齐
一、WINDOWS下(VC--其实GCC和其原理基本一样,象这种问题,一般要查具体的编译器设置)字节对齐的规则:1、一般设置的对齐方式为1,2,4字节对齐方式,VC一般默认为4字节(最大为8字节)。结构的首地址必须是结构内最宽类型的整数倍地址;另外,结构体的每一个成员起始地址必须是自身类型大小的整数倍(需要特别注意的是windows下是这样的,但在linux的gcc编译器下最高为4字节转载 2013-09-06 09:56:59 · 844 阅读 · 1 评论 -
LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅转载 2014-05-03 09:54:52 · 557 阅读 · 0 评论