- 博客(49)
- 资源 (41)
- 收藏
- 关注
转载 C类型提升
例子:类型提升之所以不嫌麻烦地将其提升为更多大的类型,然后又直接把他们裁剪为原来的大小,是为了简化编译器的设计——所有的东西都是统一长度补充:K&R C的函数声明与ANSI C的函数原型的对比由上图可知,K&R C 中始终会进行类型提升,但在ANSI C中由于使用了新风格的函数声明即函数原型中带参数类型,编译器就会假定参数
2012-07-26 15:42:27 820
转载 linux下C可执行文件在内存中的分配
C源文件各部分内容与可执行文件的映射关系:C可执行文件与内存的映射关系:BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内
2012-07-25 10:07:46 3344
转载 gcc编译过程
Gcc的编译流程分为了四个步骤,分别为:· 预处理(Pre-Processing):把"include"的文件拷贝到要编译的源文件中、用实际值替代"define"的文本。、在调用宏的地方进行宏替换。· 编译(Compiling):把预处理好的代码转化成汇编语言,进行语义语法分析,若有错,则报错· 汇编(Assembling):把汇编语言代码转换成目标代码,· 链接(Link
2012-07-25 09:29:58 1249
转载 windows中LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅
2012-07-24 16:33:04 5897
转载 C 数组与指针区别
1:先看一个错误例子:数组的定义等同于指针的外部声明?2:回忆定义与声明区别3:"地址"与"地址的内容"区别首先我们应该知道"地址y"与"地址y的内容"的区别,以赋值语句为例:x=y左值可以标记一个存储的位置,右值可以指定一个值。L-value中的L指的是Location,表示可寻址。The "l" in lvalue can be though
2012-07-24 15:48:07 984
转载 C typedef与#define区别
补充:转载:关于typedef的用法总结 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引
2012-07-23 16:08:35 622
转载 C 如何解析C的声明
例子1: char *const * (*next) ( );| return type | function name | parameter list而 char *const * 类似于:char * const
2012-07-23 14:24:53 762
转载 面向对象三要素的作用
封装可以隐藏实现细节,使得代码模块化。继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!通俗说,多态的本质就是将子类类型的指针赋值给父类类型的指针,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作
2012-07-22 19:00:53 4566
转载 java System.getProperty()方法可以获取的值
java.versionJava 运行时环境版本java.vendorJava 运行时环境供应商java.vendor.urlJava 供应商的 URLjava.homeJava 安装目录java.vm.specification.vers
2012-07-22 11:06:21 4098
原创 java JTable排序和过滤(JDK 6.0新功能)
JTable排序 在Java SE 6中除了java.awt被更新外,javax.swing同时也有了很大的改进。在C/S程序中我们会经常使 用到"表"。如我们可以在查询数据库后将查询结果显示在表格中。在Java中显示表格使用的是JTable类。在以前的版本中,JTable只能简单地显 示数据,并没有什么附加的处理功能,而在Java SE 6中的JTable增加了排序和过滤功能。用户可以单击
2012-07-22 10:24:35 18966 12
原创 Java如何获取文件编码格式
1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。 按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种
2012-07-21 14:48:00 4797 1
转载 Java文件操作大全
1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容 5、将内容追加到文件尾部public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static void readFileByBytes(
2012-07-21 10:59:12 818
转载 Java各种Logger汇总
JDK LoggerJDK Logger在java.util.logging包下面,自从JDK1.4就有了,可是因为log4j的存在,这个Logger一直沉默着。Java自带的Logger,级别比Log4j还要详细,但是如果需要自定义日志输出格式,需要自己实现Formatter,有些不方便。Log4j Log4j是Apache的一个开放源代码项目,通过使用Log
2012-07-21 10:26:45 1302
原创 java 从jar包中读取资源文件
在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题。但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 //源代码1: package edu.hxraid; import java.io.*; public class Resource { public vo
2012-07-20 15:52:36 46536 7
原创 java 浅谈JOptionPane
//也可利用JOptionPane的构造方法自定义对话框,//如:自己做一个输入密码的对话框 final JPasswordField field=new JPasswordField(); field.setEchoChar('*'); field.requestFocusInWindow(); Object[] message = { "请输入当前用户密码:", field}
2012-07-20 15:13:34 6754
转载 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
开发语言:C/C++支持平台:Windows实现功能:通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号下载地址:WMI_DeviceQuery.zip版本历史:V1.4 2010年05月17日 修正了硬盘序列号处理中的错误。现在和EVEREST Ultimate Edition 5.
2012-07-19 20:42:39 8840
转载 windows API 操作注册表函数
如今修改注册表成为继超频之后的又一大热点,许多CFAN通过对注册表的修改使Win98显得更加个性化,诸多报刊杂志也纷纷扯起注册表这面旗帜,令人遗憾的是,在介绍注册表修改的众多的文章中,大都以手工修改为例,极少数文章也只介绍有关修改注册表软件的用法,至于如何在程序中实现却无人提及。为此我在Visual Studio6.0帮助文件中用Registry关键字进行搜索,在翻译软件帮助下及不断的上机实践
2012-07-19 20:38:18 8131
转载 windows中对环境变量操作实质上是对注册表的操作
You can modify user environment variables by editing the following Registry key: HKEY_CURRENT_USER \ Environment You can modify system environment vari
2012-07-19 20:32:02 2173
转载 windows中系统开机自动运行程序和自动启动服务
注册表中关于开机自动运行程序和自动启动服务的是哪几个键? Windows启动时通常会有一大堆程序自动启动。不要以为管好了“开始→程序→启动”菜单就万事大吉,实际上,在Windows XP/2K中,让Windows自动启动程序的办法很多,下文告诉你最重要的两个文件夹和八个注册键。 一、当前用户专有的启动文件夹 这是许多应用软件自动启动的常用位置,Windows自动启动放入该
2012-07-19 10:54:42 1088
转载 C volatile关键字
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。 用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。 没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取
2012-07-17 16:13:24 596
转载 C I/O流总览
补充:C中文本文件和二进制文件的读写差别:C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写时,每遇到一个''/n''(0AH换行符),它将其换成''/r /n''(0D0AH,回车换行),然后再写入文件;当文本读取时,它每遇到一个''/r/n''将其反变化为''/n'',然后送到读缓冲区.正因为文 本方式有''/n''--''/r/n''之间的转换,其存在转换耗
2012-07-16 10:50:37 1165
转载 C文本流、二进制流的区别
一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。
2012-07-16 10:10:47 2703
转载 C回调函数和转换表
补充:上面的回调函数中,若回调函数的定义中参数与调用回调函数的函数中回调函数的声明的参数类型不一致,则需强制转换:例子:ANSI C中使用qsort()排序 并 用 bsearch()搜索是一个比较常用的组合,使用方便快捷。功 能: 使用快速排序例程进行排序用 法: void qsort(void *base, int nelem, int width, int (*fcm
2012-07-13 22:03:56 814
原创 C有序链表的终极插入函数
版本1、2、3未像有些数据库结构书上推荐在链表前添加一个“头结点”(哑节点:始终是链表的第一个节点,只是不存储有用数据)这样就消除插入链表起始位置这个特殊情况。版本1:保持一个previous指针和一个current指针,传递的参数是根指针,在链表起始位置插入时(特殊情况),不能修改根指针#include #include #define FALSE 0#de
2012-07-13 15:17:02 1851
转载 C语言内存分配
C语言内存分配问题1、C中内存分为四个区栈:用来存放函数的形参和函数内的局部变量。由编译器分配空间,在函数执行完后由编译器自动释放。 堆:用来存放由动态分配函数(如malloc)分配的空间。是由程序员自己手动分配的,并且必须由程序员使用free释放。如果忘记用free释放,会导致所分配的空间一直占着不放,导致内存泄露。 全局区:用来存放全局变量和静态变量。存在于程序的整个运行期间,
2012-07-12 20:13:41 781
转载 C结构体边界对齐2
C语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。结构体到底怎样对齐?下面总结了对齐原则,在没有#pragma pack宏的情况下:原则1、普通数据成员对齐规则:第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。原则2、结构体成员对齐规则:如果一个结构里有某些
2012-07-11 22:12:02 5199 3
转载 C结构体边界对齐1
许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们就称类型S的对齐要求比T强(严格),而称T比S弱(宽松)。这种强制的要求一来简化了处理器与内存之间传
2012-07-11 22:06:35 1515
转载 C函数堆栈的思考
源于一段课程案例的代码,拿编译器编译一下,结果不对,反复查了一下,无意中把结果改出来了,于是修改代码探索原因。虽然还有一些地方不太明确的,先总结一笔。 源码是这样的: #includeint main( ) { int x; x = 0; pass(1, 2, 3); x = 1; printf("%d
2012-07-11 08:51:12 835
转载 C指针数组和数组指针
一、指针数组和数组指针的内存布局初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面到底哪个是数组指针,哪个是指针数
2012-07-10 18:25:48 4629 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人