1.1-编程基础之基本知识
文章平均质量分 80
fei20121106
这个作者很懒,什么都没留下…
展开
-
(1.1.19)C语言之数字、字符、字符串、数组、字符数组的关联和strcpy与memcpy的差别
概述字符串处理函数概述 Name 实例1 实例2 解析 数字 2 $1600 字符 ‘2’ $1600 字符串 “2” char str[ ]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’,’\0’}; 字符数组 char str[10]={ ‘I’,’ ‘,’a’,’m’,’ ‘原创 2015-03-25 15:02:06 · 1387 阅读 · 0 评论 -
(1.1.26)C/C++中容易造成内存溢出的函数
1.strcpy()strcpy()函数将源字符串复制到缓冲区。没有指定要复制字符的具体数目。复制字符的数目直接取决于源字符串中的数目。如果源字符串碰巧来自用户输入,且没有专门限制其大小,则有可能会陷入大的麻烦中!建议使用strncpy.2.strcat()strcat()函数非常类似于 strcpy(),除了它可以将一个字符串合并到缓冲区末尾。它也有一个类似的、更转载 2015-04-26 16:38:09 · 636 阅读 · 0 评论 -
(1.1.10)虚函数、纯虚函数和虚继承的区别以及“覆盖”的概念
首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plaincopy转载 2015-03-11 16:36:56 · 1491 阅读 · 0 评论 -
(1.1.14)cout与printf缓冲区问题
1. 先说printf的优点,也就这一点了,那就是代码简洁,格式化方便,可以在格式化字符串里一次性将输出格式化。而ostream则需要一段一段地拆分,显得比较烦锁,特别是自定义输出类型的格式时,如格式化输出浮点的小数位数、十六进制输出等,用ostream更烦锁。 2.ostream类型安全,而printf则不能保证类型安全。 (1)printf容易产生输出格式字符串错误。原创 2015-03-21 21:07:01 · 779 阅读 · 0 评论 -
(1.1.20)C程序之Fock()函数
fork()导致程序在这里分叉,分为两个进程; 子进程拷贝父进程的绝大部分;#include<stdio.h>#include<unistd.h>int main(){ int i=1; if(!fork())i++; printf("%d\n",i); // 输出结果:1 2 if(!fork())i++; printf("%d\n",i); //输出原创 2015-04-02 18:05:33 · 1252 阅读 · 0 评论 -
(1.1.15)对象成员变量的构造函数和对象构造函数的执顺序以及Static、final、abstract、interface
1-执行顺序优先级优先级静态程序块非静态程序块对象成员变量的构造函数对象构造函数2-Static的作用3-final的作用4-final static的作用5-Abstract修饰符1-执行顺序优先级优先级:静态程序块>非静态程序块>对象成员变量的构造函数>对象构造函数变量的优先级>方法的优先级public class Person { public Person(int id) {原创 2015-03-23 13:15:23 · 1096 阅读 · 0 评论 -
(1.1.12)结构体和类的区别
(1)在C++中只有两点区别: (1)class中默认的成员访问权限是private的,而struct中则是public的。 (2)从class继承默认是private继承,而从struct继承默认是public继承。【从使用角度区分】1)Struct结构体是“复合类型”,其功能等同与基本的int,double的用法,尽管st原创 2015-03-12 21:04:25 · 1255 阅读 · 0 评论 -
(1.1.11)继承、公有、保护、私有继承和多重继承等
(1)多重继承,构造函数从最初是的基类开始构造,各个类的同名变量没有形成覆盖,都是各自的变量。(2)公有继承与私有继承公有继承就像是三口之家的小孩,饱受父母的温暖,享有父母的一切(public和protected的成员)。 其中保护的成员不能被外界所享有,但可以为小孩所拥有。 只是父母还是有其一点点隐私(private成员)不能为小孩所知道。私有继承就像是离家出走的小孩,父类所有元转载 2015-03-11 16:48:05 · 1066 阅读 · 0 评论 -
(1.1.6)sizeof()用法汇总 and 数据对齐
sizeof()用法汇总sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型转载 2015-03-09 12:31:32 · 740 阅读 · 0 评论 -
(1.1.2)C的|、||、&、&&、异或、~、!运算 (交换两个值,不用临时变量)
http://blog.sina.com.cn/s/blog_60e96a410100mjd2.html位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。位运算符有: &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。 其中,按位取反转载 2015-03-09 10:27:29 · 797 阅读 · 0 评论 -
(1.1.28) C++模板:函数模板、类模板、模板与继承
C++模板:描述 C++提供一种模板的机制来减少代码重复。比如:对于同一样函数使用不同的数据类型,int,double,char等。C++模板属于“元编程”的范畴。C++ 模板函数 1.支持不同数据类型的函数重载:[cpp] view plaincopy#include usi转载 2015-08-20 13:48:01 · 624 阅读 · 0 评论 -
(1.1.29)C++中定义类的对象:用new和不用new有何区别?
class Point { private: int x; int y; public: void Set(int a,int b) { x=a; y=b; } void Print() { cout<<"("<<x<<","<<y<<")"<<endl; } }; void main() { Point p1; Point *p2=new Point();原创 2015-08-21 16:57:18 · 810 阅读 · 0 评论 -
(1.1.6.1)一个例子让你搞懂“指针和引用”以及const的用法、空指针
constconst为常量,位于*的左 常量指针 位于*右指向常量的指针const int* 指针常量int* const 指向常量的指针*总是和左边的元素结合(数组的类型)(定义的类型)[]char ptr[] ptr为一个数组 *ptr指向数组的第一个元素char*ptr[]={"xx","sf","gs"} ptr为数组,数组中存放指针,指针指原创 2015-03-11 13:28:19 · 832 阅读 · 0 评论 -
(1.1.7.1)上台阶、硬币问题的算法
问题刚才在首页看到一篇博客,说的是腾讯的一道面试题:一个楼梯有50个台阶,每一步可以走一个台阶,也可以走两个台阶,请问走完这个楼梯共有多少种方法?博主把这题分析的很麻烦。引来很多人围观。我以前也碰到过这个问题。写出来和大家分享一下。举个例子,假设有3个台阶,则有三种走法:分别是,1-1-1, 1-2, 2-1。分析很简单的一道题,学过组合数学的人很快就能想到,这是一转载 2015-09-14 23:12:12 · 927 阅读 · 0 评论 -
(1.1.1.1)大数相乘
方法(一):关于大数乘法,可以使用数组来模拟小学三年级的乘法竖式计算过程,代码如下:[cpp] view plaincopy#include "iostream" #include "string" using namespace std; int main(void) { char str1[1转载 2015-09-18 10:25:00 · 804 阅读 · 0 评论 -
(1.1.13.1)正则表达式 - 语法
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式转载 2016-05-09 15:44:04 · 1867 阅读 · 0 评论 -
(1.1.2.1)^、&、>>等运算符的特殊用法
(1)^异或 1) A和B的变量交换 a=a^b; b=a^b; a=a^b;(2)&按位与 1) 验证时候偶数 if(!X&(X-1)) 2)验证对应二进制的“1”的个数 X=X&(X-1原创 2015-03-10 21:03:02 · 904 阅读 · 0 评论 -
(1.1.25)运算符重载和友元函数
什么是运算符的重载? 运算符与类结合,产生新的含义。 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义)怎么实现运算符的重载?方式:类的成员函数 或 友元函数(类外的普通函数)规则:不能重载的运算符有 . 和 .* 和 ?: 和 :: 和 sizeof友元函数和成员函数的使用转载 2015-04-21 14:10:34 · 907 阅读 · 0 评论 -
(1.1.1)螺旋队列算法分析
http://blog.csdn.net/yhmhappy2006/article/details/2934435螺旋队列的样子如下图:两大规律:1、螺旋规律2、奇数(圈数,或X轴正坐标)平方规律(紫线) 问题描述: 设1的坐标是(0,0),x方向向右为正,y方向向下为正,例如,7的坐标为(-1,-1),2的坐标为(1转载 2015-03-09 10:03:25 · 836 阅读 · 0 评论 -
(1.1.3)宏定义#define的二义性问题
#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。2 #define使用中的常见问题解析2.1 简单宏定义使用中出现的问题 在简单宏定义的使用中,当替换文本所表示的字符串为一个表达式时,容易引起误解和误用。如下例: 例1 #defin转载 2015-03-09 10:38:46 · 4090 阅读 · 0 评论 -
(1.1.4)C语言运算符优先级
同一优先级的运算符,运算次序由结合方向所决定。简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符括号成员第一; //括号运算符[]() 成员运算符. ->全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%转载 2015-03-09 10:51:07 · 738 阅读 · 0 评论 -
(1.1.5) C语言数据类型长度
JAVA原创 2015-03-09 12:25:12 · 729 阅读 · 0 评论 -
(1.1.9) 构造函数,析构函数,拷贝构造函数和赋值函数
A(void); // 缺省的无参数构造函数 A(const A &a); // 缺省的拷贝构造函数 ~A(void); // 缺省的析构函数 A & operate =(const A &a); // 缺省的赋值函数 一. 构造函数转载 2015-03-11 15:58:24 · 1394 阅读 · 0 评论 -
(1.1.8)循环算法的特征以及典型循环算法杨辉三角、螺旋队列等
循环算法的特征:1)基于一定的数学规律2)总能找到对应的基准点,并依据基准点展开算法(1)螺旋队列螺旋队列的样子如下图:两大规律:1、螺旋规律2、奇数(圈数,或X轴正坐标)平方规律(紫线) 观察这些基准值与max值之间关系,不难发现,这些基准值与max之间的差分别是1C(上边),3C(左转载 2015-03-10 21:55:21 · 939 阅读 · 0 评论 -
(1.1.13)正则表达式30分钟入门
待写原创 2015-03-15 18:28:34 · 700 阅读 · 0 评论 -
(1.1.16)编程基础之计算机理论知识
第一章 计算机基础知识点汇总电子计算机的发展历程计算机的类型常用的数制计算机仍采用二进制位数表示信息的原因计算机中的数据单位第二章 计算机系统计算机系统的构成冯诺依曼型计算机的结构中央处理器 CPU运算器控制器主板主存储器随机存储器RAM 硬盘缓存SRAM和内存条DRAMSRAM静态RAM不需要充电来保持数据完整性成本高且集成低一般做高速缓冲存储器Cache高速缓存原创 2015-03-24 10:56:12 · 1614 阅读 · 0 评论 -
(1.1.18)运算符重载和typeid
运算符重载定义运算符重载时要遵循以下规则Typeid关键字typeid是C的关键字之一等同于sizeof这类的操作符typeid操作符的返回结果是名为type_info的标准库类型之常量对象的引用指针p和引用r的不同含义示例1.运算符重载定义:C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这原创 2015-03-24 15:46:17 · 791 阅读 · 0 评论 -
(1.1.17)编程基础之this指针的用法及介绍
this只能在成员函数中使用由此可见this在成员函数的开始前构造的在成员的结束后清除1this指针是什么时候创建的2this指针存放在何处 堆栈全局变量还是其他3this指针如何传递给类中函数的绑定还是在函数参数的首参数就是this指针那么this指针又是如何找到类实例后函数的4this指针如何访问类中变量的5我们只有获得一个对象后才能通过对象使用this指针如果我们知道一个对象thi原创 2015-03-24 14:26:56 · 911 阅读 · 0 评论 -
(1.1.7)递归算法典型特征及经典递归例子代码实现
递归(recursion):程序调用自身的编程技巧。 递归满足2个条件: 1)有反复执行的过程(调用自身) 2)有跳出反复执行过程的条件(递归出口)递归算法的通用解法:递归算法的典型例子:(1)阶乘 n! = n * (n-1) * (n-2) * ...* 1(n>0)//阶乘int recursive(int i)原创 2015-03-09 18:16:00 · 2785 阅读 · 0 评论 -
(1.1.21)继承和组合的区别
继承是子类implements父类【车和小轿车】,而组合其实是对象持有,类似于组合模式【电脑,显示器、主机、音响】先它们都是实现系统功能重用,代码复用的最常用的有效的设计技巧,都是在设计模式中的基础结构。相信大家已了解的,类继承允许我们根据自己的实现来覆盖重写父类的实现细节,父类的实现对于子类是可见的,所以我们一般称之为白盒复用。对象持有(其实就是组合)要求建立一个号的接口,但转载 2015-04-05 17:05:24 · 683 阅读 · 0 评论 -
(1.1.23)浅复制和深复制
浅拷贝:复制基本成员对象,复杂或自定义对象仅拷贝一个引用,指向元对象深拷贝:同时复制基本成员对象,和复杂或自定义对象原创 2015-04-07 11:43:30 · 615 阅读 · 0 评论 -
(1.1.6.3)整型数组初始化为0和字符数、枚举的初始化
被定义为全局的数组,在声明的时候,就自动赋为0了; 但是字符数组仍为空。 对于局部变量类型的数组,也只要在初始化定义时写一个0进去就行了,其余元素也会相应地赋0;如:int a[50]={0};原创 2015-03-18 11:32:21 · 871 阅读 · 0 评论 -
(1.1.22)前置++和后置++的区别
今天在阅读《google c++ 编程风格》的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意:对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理由是 前置自增 (++i) 通常要比后置自增 (i++) 效率更高。于是我查了查前置++和后置++的区别。注意:《more effective c++》条款8也专门叙述了问题。后来我发现,下面的文章转载 2015-04-05 17:47:23 · 2497 阅读 · 0 评论 -
(1.1.24)C++输入cin详解
输入原理:程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入#1:#include using namespace std;int main(){转载 2015-04-21 13:57:38 · 588 阅读 · 0 评论 -
(1.1.6.2)char* 与char[]的区别和C/C++编译的内存管理
以下内容均来自互联网,系笔者汇总并总结。1. 问题介绍问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++代码#include using namespace std;main(){转载 2015-03-18 10:33:39 · 807 阅读 · 0 评论