C/C++
文章平均质量分 76
Microsues
现就读于南京邮电大学信号与信息处理专业
展开
-
函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal)
前段时间找到这个帖子,收益匪浅。原文地址:http://blog.csdn.net/jia_xiaoxin/archive/2008/09/14/2868216.aspx 关于函数的调用规则(调用约定),大多数时候是不需要了解的,但是如果需要跨语言的编程,比如VC写的dll要delphi调用,则需要了解。 microsoft的vc默认的是__cdecl方式,而windows API则是__stdcall,如果用vc开发dll给其他语言用,则应该指定__stdcall方式。堆栈由谁转载 2010-12-07 10:18:00 · 863 阅读 · 0 评论 -
C++ 对象的内存布局(下)
<br />声明:本文转载自http://blog.csdn.net/haoel/archive/2008/10/15/3081385.aspx <br /> <br /><br />C++ 对象的内存布局(下)<br /> <br />陈皓<br />http://blog.csdn.net/haoel<br /> <br /> <br /> 重复继承<br /> <br />下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。<br /> <br />下图是一个继承转载 2011-01-30 17:37:00 · 618 阅读 · 0 评论 -
浮点数在存储器中的表示与计算
<br /><br />本文转载自:http://blog.csdn.net/stone688598/archive/2011/02/28/6214454.aspx<br />问题 1 ,变量在内存中的存储<br /> <br /> <br />Microsues 发的微薄:<br />C++ 中,把负值赋给 unsigned 对象是合法的,其结果是该负数对该类型的取值个数求模后的值。例如:把 -1 赋给 8 位的 unsigned char ,因为 -1对 256 求模后的值为 255 ,所以结果是 25转载 2011-03-01 09:27:00 · 1857 阅读 · 0 评论 -
Z字扫描和回环圈
<br />1. Z字扫描<br />代码:<br />//Z字扫描#include<iostream>#include<vector>using namespace std;int main(){ int cd = -1; //步长后面的1 int d = 0; //步长 int a[10][10] = {0}; int i=0,j=0; int k = 0; //需要付的值 if(d%2==0 && cd==-1) //初始化 {原创 2011-05-31 21:41:00 · 1546 阅读 · 0 评论 -
小程序:二分法//字符串转变成整数//删除代码里的注释
1、二分法://二分法:搜索已排序好的字符串组#includeusing namespace std;int bisearch(char** arr,int b,int e,char* v){ int minIndex=b,maxIndex=e,midIndex=0; while(minIndex < maxIndex) { midIndex = minIn原创 2011-06-13 21:34:00 · 1089 阅读 · 0 评论 -
memcpy和memmove的区别
参考:http://blogold.chinaunix.net/u/22520/showart_430430.html memcpy()和memmove()都是C语言中的库函数,在头文件string.h中,其原型分别如下: void *memcpy(void *dst, const void *src, size_t count);void *memmove(voi原创 2011-06-20 22:16:00 · 686 阅读 · 0 评论 -
从C转化到C++
参考:Expert C Programming P366-P2681、char b[3] = "Bob";//在C中合法,在C++中不合法。 sizeof(a);//C++中返回1,C中返回4。2、C++允许一个常量整数来定义数组的大小,C中不允许。 eg: const int size = 128; char a[size];原创 2011-06-21 14:48:00 · 1203 阅读 · 0 评论 -
C/C++面试题(三)
//题目一:转义字符/*#includeusing namespace std;int main(){ // (ASCII的范围从0-127(十进制)) // \ddd 3位八进制 // \xhh 2位十六进制 int i; // \ddd这种形原创 2011-07-07 09:34:56 · 972 阅读 · 0 评论 -
阿里巴巴笔试题--求数组中和为给定数所有的组合
一、问题描述给定一个数t,以及n个整数,在这n个数中找到加和为t的所有组合,例如t=4,n=6这6个数为[4,3,2,2,1,1],这样输出就有4个不同的组合它们的加和为4:4,3+1,2+2,and 2+1+1。请设计一个高效算法实现这个需求。二、解题思路先将数据按从大到小进行转载 2011-07-13 16:35:12 · 8935 阅读 · 1 评论 -
数组的数组"、"数组的指针"、"指针的数组"和"指针的指针"的关系
>第9、10两章讲到数组和指针,这里就数组的数组、数组的指针、指针的数组和指针的指针的关系做个总结。1.概念C语言中的二维数组即数组的数组,eg: char a[2][3] ; 数组的指针即数组指针,eg: char (*a)[3];a是指向一个二维数组的指针指针的数组即指针数组原创 2011-01-03 20:01:00 · 1184 阅读 · 1 评论 -
C++ 对象的内存布局(上)
<br />声明:本文转载自http://blog.csdn.net/haoel/archive/2008/10/15/3081328.aspx<br /> <br /><br />C++ 对象的内存布局(上)<br /> <br />陈皓<br />http://blog.csdn.net/haoel<br /> <br /> 前言<br /> <br />07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里转载 2011-01-30 17:34:00 · 732 阅读 · 0 评论 -
struct/class/union内存对齐原则
struct/class以及union内存对齐四个原则:1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/class/uinon。2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部"最宽基本类型成员"的原创 2011-01-14 20:01:00 · 6798 阅读 · 2 评论 -
DLL和LIB综述
<br />在网上寻了一圈dll和lib相关的知识,个人感觉这个帖子写很好。<br />链接地址:http://blog.csdn.net/yaneng/archive/2010/03/25/5415551.aspx<br /> <br /><br />lib是静态库,dll一般是动态链接库(也有可能是别的)<br /><br />比如要编译个exe,lib在编译的时候就会被编译到exe里,作为程序的一部分<br /><br />而dll是不被编译进去,是运行的时候才调入的(可能是exe刚运行就调入,也可能转载 2010-12-07 10:11:00 · 829 阅读 · 0 评论 -
关于C/C++中的关键字delete
<br />这个问题迷惑着我,我在CSDN上发帖子,得到了很好的解决。这是我第一次在CSDN上发帖子,CSDN果然是N多大牛.<br />先看代码:<br />class base{public: base() {p = this;cout<<"base()"<<endl;} ~base() { if(p != NULL) { cout<<"~base()"<<endl; delete p; //为什么执行这条语句会导致无限递归??????原创 2010-12-10 19:34:00 · 3200 阅读 · 2 评论 -
C/C++面试题(一)
<br />收集了一些C/C++面试题,贴出来分享,有几道题的程序是网友写的,在程序中有说明。<br />欢迎转发,转发请注明出处,谢谢合作。<br /> <br /> <br />//题目1:求1+2+…+n,//要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。//方法一:常规方法:不满足要求//使用递归需要一个终止条件.../*#include <iostream>using namespace std;i原创 2010-12-13 21:39:00 · 1726 阅读 · 0 评论 -
在VC9.0中实现C++模板类头文件和实现文件分离的方法
<br /> <br />如何实现C++模板类头文件和实现文件分离,这个问题和编译器有关。<br />引用<<C++primer(第四版)>>里的观点:1)标准C++为编译模板代码定义了两种模型:“包含”模型和“分别编译”模型。2)所有编译器都支持“包含”模型,某些编译器支持“分别编译”模型。<br />问题的提出:(帖子在:http://topic.csdn.net/u/20101215/15/f4f270f2-f0f9-4c5f-8765-1bfde2aeebbf.html)<br />第一种方法:按C原创 2010-12-15 19:12:00 · 5037 阅读 · 2 评论 -
C/C++面试题(二)
继续把自己做的一些比较经典的面试题贴出来,题目均在VS2008中调试通过,欢迎交流,欢迎转发,转发请注明出处,谢谢。/*//题目1:查找最小的k个元素//题目:输入n个整数,输出其中最小的k个。//例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。#includeusing namespace std;void print_min_k(int *pta,int n,int k){ //采用冒泡排序,到第k次即可结束排序,输出已排序的k个数即为求原创 2010-12-23 19:44:00 · 1333 阅读 · 2 评论 -
2011年.NET面试题总结---献给即将找工作的同行们
<br />严重声明:本文转自:http://blog.csdn.net/aspnet2002web/archive/2010/12/18/6084149.aspx 转发请注明出处<br />.Net基础知识什么是面向对象<br /> 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP;<br /> 通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数;<br转载 2010-12-30 21:42:00 · 9192 阅读 · 0 评论 -
如何理解数组作为函数参数时,数组名就是指针?
<br />在《Expert C Programming》这本书中,第202页有这样一句话:在函数参数的声明中,数组名被编译器当着指向该数组第一个元素的指针。通过实例测试,这句话的意思就是:在声明这个参数的整个函数作用域内,数组名就是指针。<br />见测试用例:<br />#include<iostream>#include<stdio.h> using namespace std;void fun(char ca[]){ printf("%x/n",ca);原创 2011-01-02 21:04:00 · 5061 阅读 · 0 评论 -
函数返回指针的几种方案
<br />//展示函数如何返回指针//当指针为全局变量、静态变量或指向堆中的数据时,可以从函数中返回。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<memory.h>//方案一(错误)://返回一个指向局部变量的指针,当函数结束时,由于变量已被自动销毁,//这个指针所指向的地址的内容"未定义"char *fun_1(){ char buffer[] = "Only works for原创 2011-01-08 20:39:00 · 1610 阅读 · 0 评论 -
代码展示:分析C中的声明语句
该代码来自>//代码功能:分析C语言中的声明//在VS2008中用C编译器编译//忽略错误处理//处理结构、枚举和联合时只简单地用"struct","enum"和"union" 来地表它们具体的内容//假定函数的括号内没有参数列表#include#include#include#include#define MAXTOKENS 100 //define语句后面没有分号!!!#define MAXTOKENLEN 64struct token{ char t原创 2011-01-11 14:33:00 · 1209 阅读 · 0 评论 -
多重继承下的Virtual Function 内存布局
本文的例子来自> P1591.先给出测试代码和测试结果#includeusing namespace std;class Base1{public: virtual ~Base1() {}; virtual void speakClearly()原创 2011-05-28 19:38:00 · 1461 阅读 · 0 评论