- 博客(18)
- 收藏
- 关注
转载 c++内存中字节对齐问题详解 [ 转载 ]
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数
2011-11-13 23:24:52 336
转载 常见排序算法(冒泡,选择,快速)的C语言实现
常用的排序算法的时间复杂度和空间复杂度排序法 最差时间分析平均时间复杂度 稳定度 空间复杂度 冒泡排序O(n2)O(n2)稳定 O(1) 快速排序O(n2)O(n*log2n)不稳定 O(log2n)~O(n)选择排序O(n2)O(n2)稳定
2011-11-09 14:50:39 432
转载 C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include iostream>using namespace std;class CExample {private: int a;pu
2011-11-05 21:40:01 295
转载 动态申请内存方式和数组的比较
§当所需的空间大小不确定并且对空间有要求时 使用malloc §当需要频繁申请/释放空间时 使用数组 声明周期与释放 数组的释放遵循其声明周期,无需我们显式的释放 Malloc如果不手动释放,此内存段会处于受保护状态,将不能再被分配给别人 内存碎片
2011-11-04 17:49:21 860
转载 位运算例子
题目1:从键盘上输入1个正整数给int变量num,输出由8~11位构成的数(从低0号开始编号) 基本思路: 1.截取8~11位的数,位移到0~3位 a)构建8~11位上为1其余为0的数 b)位与输入数 c)得到的结果右移8位 2.先将8~11位移到0~3位,截取0~3位 a)输入数右移8位 b)构建0~3位为1其余为0的数 c)位与,得到结果
2011-11-04 13:28:09 603
转载 关于数组地址,指针
1.以下三条输出语句分别输出什么?char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc";const char* str6 = "abc";cout cout
2011-11-03 20:24:32 296
转载 C++函数中那些不可以被声明为虚函数
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。 1、为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。 2、为什么C++不支持构造函数为虚函数? 这个原因很简单,主要是从语义上考虑,所以不支持。因为构造函
2011-11-03 13:11:04 371
转载 C++函数重定义、重载、重写
1. 重写 (override): 父类与子类之间的多态性。子类重新定义父类中有相同名称和参数的虚函数。1) 被重写的函数不能是 static 的。必须是 virtual 的,或者是 override 的 ( 即函数在最原始的基类中被声明为 virtual , c++ 中没有 override) 。2) 重写函数必须有相同的类型,名称和参数列表 (即相同的函数原型)3)
2011-11-02 20:58:43 325
转载 详细介绍C++中的虚函数和动态联编
面向对象程序设计的基本观点是用程式来仿真大千世界,这使得它的各种根本特性非常人性化,如封装、继承、多态等等,而虚函数就是c++中实现多态性的主将。为了实现多态性,c++编译器也革命性地提供了动态联编(或叫晚捆绑)这一特征。虚拟函数亦是mfc编程的关键所在,mfc编程主要有两种方法:一是响应各种消息,进行对应的消息处理。二就是重载并改写虚拟函数,来实现自己的某些要求或改变系统的某些默认处理。
2011-10-31 22:05:09 533
转载 数组里a和&a的区别
#includeint main(void){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); //&a代表整个数组的地址,+1应该加上sizeof(a)的长度,所以ptr指向a[5]位置处。 printf("%d %d\n",*(a+1),*(ptr-1));//a代表数组首元素的地址,+1应该加上sizeof(a[0]),所以
2011-10-30 15:10:29 585
转载 关于extern “C”
extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。 (1) 被extern "C"限定的函数或变量是extern类型的 extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列
2011-10-30 14:16:20 231
转载 关于static
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序
2011-10-30 10:37:07 212
转载 栈的push、pop序列
题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。思路:首先新建一个栈。从push序列开始遍历,如果当前元素与pop序列当前元素相等,则两个序列向前推进。否则如果当前栈的栈顶元素与与pop序列当前元素相等,则pop序列向前推进,栈顶元素出栈。否则如果当前push序列还没遍历完,则将push序列当前元素压入栈,然后继续迭代。
2011-10-29 16:53:01 888
转载 关于大、小端字节序
总结:1、80X86使用小端法,网络字节序使用大端法。 2、二进制的网络编程中,传送数据,最好以unsigned char, unsigned short, unsigned int 来处理, unsigned short ,unsigned short 以网络字节序处理后再拷贝到发送的buffer里 3、结构体前要指定
2011-10-29 16:47:33 436
原创 一条小面试题解答
给定结构struct A{char t:4;char k:4;unsigned short i:8;unsigned long m;};问sizeof(A) = ?【标准答案】8char t:4;char k:4;unsigned short i:8;均涉及位段知识,若没有最后一句unsigned long m则答案为2,若加了句unsigned l
2011-10-29 10:11:15 1542
转载 malloc()问题
malloc()的问题:#include #include void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,"hello world"); } int main( ) { char *str=NULL; getmemory(str);
2011-10-29 09:25:18 2818
转载 【1】ptr = malloc(0*sizeof(char))【2】关于typedef的用法总结【3】关于有符号数、无符号数和数据类型的总结 .
ptr = malloc(0*sizeof(char));(转载)最近,看了有关malloc(0)的返回值以及其他一些问题的讨论,我把自己的感受和看法记录如下:问题:char* ptr = malloc(0*sizeof(char));if(NULL == ptr) printf("got a NULL pointer");el
2011-10-27 17:43:52 1727
转载 STL中vector向量初始化问题
一个hello world程序。这个程序将一个字符串传送到一个字符向量中,然后每次显示向量中的一个字符。向量就像是盛放变长数组的花园,大约所有STL容器中有一半是基于向量的,如果你掌握了这个程序,你便差不多掌握了整个STL的一半了。 //程序:vector演示一
2011-09-27 16:38:40 7984
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人