
C/C++
文章平均质量分 78
Sparkjin
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
函数返回值为数组
以前想到函数返回值是数组的问题,从来没有深究,今天又遇到了此类问题,和同学探讨了下,总结如下: 首先先看一个返回值为数组的类子: 点击(此处)折叠或打开#includestdio.h>#define N 5int *print(){ int a[N]; int i;转载 2013-04-03 21:01:52 · 3684 阅读 · 0 评论 -
C++ Virtual基础知识讲解
Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Ba转载 2013-04-07 17:10:51 · 1033 阅读 · 1 评论 -
C++中的类所占内存空间总结
最近在复习c++的一些基础,感觉这篇文章很不错,转载来,大家看看!类所占内存的大小是由成员变量(静态变量除外)决定的,成员函数(这是笼统的说,后面会细说)是不计算在内的。摘抄部分:成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而我们访问转载 2013-05-03 18:38:32 · 523 阅读 · 0 评论 -
C语言位运算详解
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1转载 2013-04-27 15:39:54 · 628 阅读 · 0 评论 -
用C语言实现大小端判断
大端小端的概念(以下概念来自网络)端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。转载 2013-05-14 18:21:58 · 667 阅读 · 0 评论 -
C++标准库简介
C++标准库的所有头文件都没有扩展名。C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能。 形式的标准头文件【 例外】其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能。在 形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明。在C++中还可以使用name.h形式的标准C库头文件名。C++标准库的内容分为10类转载 2013-07-07 11:57:52 · 445 阅读 · 0 评论 -
C++内存分配秘籍—new,malloc,GlobalAlloc详解
C++内存分配秘籍—new,malloc,GlobalAlloc详解 C++内存分配秘籍—new,malloc,GlobalAlloc详解 _______只为因内存分配而无法入眠的程序员一。关于内存转载 2013-06-27 22:55:16 · 629 阅读 · 0 评论 -
关于字符串指针不可修改的问题
基础介绍:我们在程序开发中将C++存储区域分为以下几步:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由系统回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表3、全局区(静态区)(static)—,全局原创 2013-08-21 11:19:26 · 781 阅读 · 0 评论 -
C++抽象类的纯虚函数
1,定义: 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加"=0" ,同 java中抽象方法类似virtual void funtion1()=0 二、引入原因:1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2、在很多情况下,基类本身生成对象是不合情转载 2013-08-27 16:08:25 · 1021 阅读 · 0 评论 -
C/C++程序内存分配详解
C/C++程序内存分配详解 一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2转载 2013-09-15 09:39:37 · 745 阅读 · 0 评论 -
字符串与字符数组
因为字符串常量"I am happy"的最后由系统自动加上一个'\0')因此,上面的初始化与下面的初始化等价char str[ ]={'I',' ','a','m',' ','h','a','p','p','y','\0'};而不与下面的等价char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};前者的长度转载 2013-10-16 21:04:26 · 875 阅读 · 0 评论 -
qsort()使用总结
一、简单介绍qsort()是一个基于快速排序的排序函数,需要调用头文件#include 。题中设计到排序时直接调用qsort()会很方便,基本使用状态:qsort(a,n,sizeof(a[0]),cmp),这样会对a[0]...a[n-1]数组进行cmp排序,如果仅仅对部分数组进行排序,qsort(&a[m],n1,sizeof(a[m]),cmp)即可。然后主要就在于cmp函数的定义了转载 2013-05-02 16:33:32 · 679 阅读 · 0 评论 -
指针与引用区别
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。即:引用指向的那块内存空间不会变在C++中,指针和引用经常用于函转载 2013-04-19 15:26:43 · 546 阅读 · 0 评论 -
关于函数调用约定
函数调用约定描述了如何以正确的方式调用某些特定类型的函数。包括了函数参数在栈上的分配顺序、有哪些参数将通过寄存器传入,以及在函数返回时函数栈的回收方式等。函数调用约定的几种类型 stdcall,cdecl,fastcall,thiscall,nakedcall,pascalstdcall调用约定为Win32 API所广泛使用。 1、参数是从右往左传递的,也是转载 2013-04-06 17:49:39 · 623 阅读 · 0 评论 -
C++ 继承题
1、#include class A{ public: A(){func(0);}; virtual void func(int data){printf("A1 :%dn",data);} virtual void func(int data) const{printf("A2 :%dn",data);} void func(char *str){printf("A3 :转载 2013-04-07 17:33:03 · 903 阅读 · 0 评论 -
小例子一步一步解释“函数调用过程中栈的变化过程
小例子一步一步解释“函数调用过程中栈的变化过程”1 问题描述 在此之前,我对C中函数调用过程中栈的变化,仅限于了解有好几种参数的入栈顺序,其中的按照形参逆序入栈是比较常见的,也仅限于了解到这个程度,但到底在一个函数A里面,调用另一个函数B的过程中,函数A的栈是怎么变化的,实参是怎么传给函数B的,函数B又是怎么给函数A返回值的,这些问题都不能很明白的一步一步解释出来。下转载 2013-04-09 15:56:31 · 768 阅读 · 0 评论 -
C语言的编译链接过程的介绍
出处:http://soft.chinabyte.com/database/174/12454174.shtml C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的转载 2013-04-10 09:12:57 · 737 阅读 · 0 评论 -
静态链接与动态链接的区别
动态链接库、静态库、import库区别动态链接库(Dynamic Linked Library):Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,转载 2013-04-10 09:43:31 · 579 阅读 · 0 评论 -
计算机端口详解
计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。 可以先了解面向连接和无连接协议(Connection-Oriented and Connectionless Prot转载 2013-04-10 22:36:11 · 582 阅读 · 0 评论 -
整型之具体字节数
可以表示整数类型 关键字包括 char short int long long ,这些整数类型分配的字节大小 会根据 机器的字长(32/64位) 和编译器有所不同 标准规定,int 的表示范围不能小于 short 的表示范围,long 的表示范围不能小于 int 的表示范围。这就是说 short 型变量占用的空间可能比 int 型变量少,而 long 型变量占用的转载 2013-04-22 23:40:34 · 1605 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内转载 2013-04-24 17:09:52 · 507 阅读 · 0 评论 -
内存初始化函数memset()用法详解
作用:在一段内存中填充某个给定的值,注意填充时是按照字节顺序填充的,而不是按照元素填充。此方法是对较大的结构体和数组进行清零操作的一种有效方法。函数形式:memset(void *buffer,int c,size_t n)buffer是需要设置的内存的开始地址;c是期望填充值;n是需要填充的字节数。例1:一个int a[10]型变量,则memset(a,100,sizeof(in转载 2013-04-25 15:59:46 · 954 阅读 · 0 评论 -
结构体对齐详解
1 -- 结构体数据成员对齐的意义许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的起始地址的值是某个数k的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。比如这么一种处理器,它每次读写内存的时候都从某个8倍数的地址开始,一次转载 2013-09-15 14:37:29 · 743 阅读 · 0 评论