C/C++
文章平均质量分 70
_NiuLi
... ...
展开
-
C 指针&&数组
一、指针与数组的定义首先来看一下定义与声明的具体含义定义只能出现一次确定对象的类型并分配内存,用于创建新的对象(特殊的声明)声明可以出现多次描述对象的类型,用于说明其它对象的类型 我们常说数组名是数组首元素的地址,即是一个指针。有时候我们也会把数组名当做指针来访问数组;还有给函数传一个数组时传的是数组首元素的地址,函数的形参可以定义为一个指针变量。这是不是说数组名就与指针等价呢? 不原创 2016-06-06 15:22:50 · 259 阅读 · 0 评论 -
C 指针&&函数
一、函数指针 顾名思义,函数指针,首先它是一个指针,因为可以指向函数,所以称为函数指针。可以与数组指针类比。 与定义数组指针类似,函数指针的定义如下: 函数返回值类型(*变量名)(函数参数类型) 如 void (*pfun)(int) //函数指针pfun指向的函数的类型是 void (int) 来判断下面的代码是什么意思(1)、char * (*fun原创 2016-06-06 15:22:53 · 305 阅读 · 0 评论 -
深度探索C++关键字之 virtual
virtual在C++中有两个重要的用途:一是解决由多继承中父类有相同基类引起的子类中成员的二义性问题,二是实现多态。一、解决二义性1、引起二义性的原因 二义性是在多继承中出现的,如果派生类的父类继承了同一个基类,那么派生类对象访问继承自基类中成员时便会出现二义性。如下代码:#include #include class Base { public: int _b; }; clas原创 2016-06-06 15:23:02 · 785 阅读 · 0 评论 -
栈帧
C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。首先,栈是从高地址向低地址延伸的。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(低地址)。先来看一个代码#include void fun() { int tmp = 10; int*p = (int*)(*(&tmp + 1)); *(p - 1) = 2原创 2016-06-06 15:22:47 · 654 阅读 · 0 评论 -
素数求解及其优化
题目一: 请实现一个函数,对于给定的整型参数N,依次打印出小于N的素数。 解法一:试除法 由素数的定义我们很自然的会想到如下代码: #include void print_prime(int n) { int i=0; for(i=2;i<=n;i++) { int j=0; for(j=2;j<i;j++)原创 2016-04-29 08:35:24 · 428 阅读 · 0 评论 -
可变参数列表
在很长的一段时间里,我都感觉可变参数列表难!很难! 今天又遇到了这个难题。起因是要写一个求和的函数,函数的参数不确定。这就需要使用可变参数列表来实现。然我写不出来。脾气上来了决定好好研究一下这个,然后开始查源码,研究了一下突然发现好简单…… 可变参数列表是怎么实现的呢?举个例子可能更好理解 现在需要写一个对参数求和的函数,传入的参数不确定。参数原型 int Sum(size_t N,原创 2016-08-30 21:27:20 · 253 阅读 · 0 评论 -
为什么 没有缺省构造函数的类类型成员 必需要在初始化列表 里初始化 ?
名词解释 1、缺省构造函数:类的构造函数无参或参数默认值统称为缺省构造函数。 2、初始化列表:与其它函数不同,构造函数除了有名字,参数列表和函数体外还可以有初始化列表。列表以冒号开始后跟以逗号隔开的初始化字段。类成员是在构造函数的初始化列表创建好的,在创建类成员的同时,给成员变量一个初始化值。在解释原因之前,需要了解构造函数是如何执行的构造函数的执行过程 首先,构造函数的执行分为原创 2016-06-06 15:22:59 · 1038 阅读 · 0 评论 -
C 指针&&表达式&&常量
一、指针 在计算机语言中,由于通过地址能找到所需的变量,可以说地址指向该变量单元,因此把地址形象的称为‘指针’,意思是能通过它来找到以它为地址的内存单元。1.1、指针&&变量 指针变量与普通变量一样,使用之前不仅要定义说明而且必须要赋具体的值,未经赋值的指针变量不能使用;可以对指针变量初始化为NULL,但是不能对值为NULL的指针变量解引用。 如下定义一个指针变量原创 2016-06-06 15:22:56 · 489 阅读 · 0 评论