C 学习
文章平均质量分 84
dtmine
软件工程,数据挖掘
展开
-
什么是宏?
1.不带参数的宏定义: 宏定义又称为宏代换、宏替换,简称“宏”。格式:#define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”。预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。掌握"宏"概念的关键是“换”。一转载 2011-10-05 23:12:55 · 716 阅读 · 0 评论 -
细说 #pragma pack(n)
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。例如,下面的结构各成员空间分配情况:struct test转载 2012-10-21 22:40:57 · 803 阅读 · 0 评论 -
static in C
惨痛教训: 假设在test.h中定义了一个static bool g_test=false; 若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_test,在test1.c 中置g_test=true,而test2.c中仍然为false并未改变!shit!!一、c程序存储空间布局C程序一直由下列部分组成:转载 2012-10-21 23:04:19 · 509 阅读 · 0 评论 -
C和C++动态内存分配和释放的区别
一、先来谈谈在C语言下,动态内存分配和释放的特点。动态分配内存的定义是这样的,指在程序运行过程中,要申请内存,系统会根据程序的实际情况来分配,分配空间的大小是由程序的需求来决定的。在C语言下面,举个例子,定义一个指针,int *p;此时指针i是一个野指针,是一个指向不确定位置的指针,对它进行操作是很危险的,此时我们需要动态分配内存空间,让i指向它。而有一种形式是这样的,int *p=&b;这并转载 2012-10-21 21:28:37 · 2370 阅读 · 0 评论 -
static in C++
要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量: int a; string s; 其实就是: auto int a; auto string转载 2012-10-21 22:43:19 · 549 阅读 · 0 评论 -
学习C/C++的50个好网站
1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C++脚本和程序。所有程序都分为不同的类别。 3、http://www.planetsourcecode.co转载 2012-11-04 22:27:59 · 798 阅读 · 0 评论 -
笔试面试Blog收藏
给大家推荐几个博客。 第一个:http://zhedahht.blog.163.com/这里有一系列的微软google等面试题,我是花了几天时间把这里面的60几篇博客从头至尾看完,而且大部分算法都用笔在纸上实现了一遍,没办法,因为面试就是这样,纸上写代码。这里面,八皇后问题创新工场笔试中考到了,当然这个问题很多书中也谈到过,不过这里用到的全排列的思想代码实现比较简洁。转载 2012-11-23 23:11:43 · 377 阅读 · 0 评论 -
快速排序的基本思想
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比转载 2013-03-12 21:35:22 · 18303 阅读 · 0 评论 -
关于C++中的域作用符
1. ::域作用符,用来引用全局的变量、函数等 比如 int i = 0; void test() { int i = 3; cout //输出函数中的局部变量i转载 2013-03-25 21:31:47 · 1329 阅读 · 0 评论 -
头文件的用途和结构
早期的编程语言如BASIC、Fortran没有头文件的概念,C++/C语言的初学者虽然会使用头文件,但常常不明其理。这里对头文件的作用略做解释。(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需按照头文件中的接口声明来调用库函数,而不必关心接口是怎么实现的。连接器会从库中提取相应的代码,并和用户的程序连接生成可执行文转载 2013-03-25 15:49:50 · 844 阅读 · 0 评论 -
如何计算结构体及共用体大小
原文地址:如何计算结构体及共用体大小(转载)作者:清贫晓丫头对于结构体首先理解字节对齐机制:(1),结构体变量的首地址能够被其最宽基本类型成员大小所整除。(2),结构体每个成员相对于结构体首地址的偏移量(offset)都是该成员大小的整数倍,如有需要,编译器会在成员之间加上中间填充字节。(3)结构体总大小为结构体最宽基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员之后转载 2012-10-20 23:15:53 · 3159 阅读 · 0 评论 -
函数指针和指针函数
【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可转载 2012-10-19 14:07:59 · 361 阅读 · 0 评论 -
指向指针的指针(教材)
8.7.3 指向指针的指针指向指针的指针也称为二级指针,它指向的是指针型的数据。定义指向指针的指针变量的格式为:数据类型 **指针变量名称;下面通过一个实例说明指向指针的指针变量的用法。main(){int i;char *pArray[]={"How","are","you"};char **p;p= pArray;printf("\n");for转载 2012-05-23 15:42:59 · 679 阅读 · 0 评论 -
C 宏的简单总结
1,防止一个头文件被重复包含 #ifndef BODYDEF_H #define BODYDEF_H //头文件内容 #endif 2,得到指定地址上的一个字节或字 #define MEM_B( x ) ( *( (byte *) (x) ) )转载 2011-10-05 22:45:23 · 354 阅读 · 0 评论 -
C/C++中几个宏的简单总结
有人视宏为洪水猛兽,甚至要求完全从C/C++中摒弃,有人则认为宏为至尊宝典,在逻辑代码中都大量使用。个人认为这是个仁者见仁智者见智的问题,摒弃就没必要了,看看宏在MFC和ATL中的一些经典应用,你会发现如果不使用宏来实现一些消息映射和对象映射神马的那将让“苦逼”程序员多花费多少宝转载 2011-10-05 23:18:56 · 470 阅读 · 0 评论 -
如何使用Visual Studio 2005或Visual Studio 2008编译纯C语言程序!!【图文】
转载自:http://hi.baidu.com/_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/5d4b7573c01ded198601b011 谁说VS2005不能编译纯C程序?当然能,而且很简单,和编译C++差不多,所以具体的我就不多说了,首先请参考我这篇文章: http://hi.baidu.com/_%E2d_%B7%B3_%DE%B2%C转载 2011-10-24 21:05:38 · 4961 阅读 · 0 评论 -
yield() sleep() wait() 区别
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常 比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只转载 2012-02-18 23:55:40 · 322 阅读 · 0 评论 -
彻底搞定C指针——指针的指针
标 题: 彻底搞定C指针---指向指针的指针(转) 一. 回顾指针概念: 今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧! 当我们程序如下申明变量: short int i; char a; short int * pi; 程序会在内存某地址空间上为各变量开辟空间,如下图所示。 内存地址→6 7 8 9转载 2012-03-06 22:06:01 · 316 阅读 · 0 评论 -
二位数组和指针(参考)
二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一维数组了。而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组下面我们讨论指针转载 2012-03-06 22:57:42 · 504 阅读 · 0 评论 -
C实现数制之间的相互转换
使用计算机的人每时每刻都在与数打交道,在计算机内部,数是以二进制表示的,而我们习惯上使用的是十进制数,所以计算机从我们这里接收到十进制数后,要经过翻译,把十进制数转换为二进制数才能进行处理,这个过程是由计算机自动完成的。但是对程序员来说,有时需要把十进制数转换为二进制数、十六进制数和八进制数,或者把十六进制数转换为十进制数等,这都不是一件轻松的工作,为了使这项工作变得轻松愉快,作者转载 2012-03-07 22:06:59 · 895 阅读 · 0 评论 -
(C语言教程)指针
第六章:指针指针简介 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的转载 2012-03-18 16:07:06 · 764 阅读 · 0 评论 -
指针数组和数组的指针(示例)
//注意指针数组和数组指针分别是如何指向二维数组的#include main(){ static int m[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};/* 定义二维数组m并初始化*/ int (*p)[4];//数组指针 p是指针,指向一维数组,每个一维数组有4个int元素 int i,j; int *q[3];/转载 2012-03-18 16:53:09 · 628 阅读 · 0 评论 -
C++预处理指令
C++预处理指令 http://blog.csdn.net/codewarrior/archive/2006/05/29/760690.aspx #include#define#undef#pragma#import#error#line#ifdef#ifndef#if#else#elif#endif 宏以转载 2013-04-17 21:56:33 · 709 阅读 · 0 评论