编程基础
moses1213
积跬步,至千里;积小流,成江海!
展开
-
函数调用中实参和形参变化问题
很多初学者搞不明白子函数中什么时候可以改变实参值,什么时候不会改变。今天来具体分析下。先来解释下实参和形参,所谓实参,就是通过主函数传递给子函数的变量。而子函数中用来接收变量的参数就称形参。如下:#includevoid fun(int p,int q){ int temp; temp = p; p = q; q = temp; return ;转载 2015-01-26 19:52:48 · 2696 阅读 · 0 评论 -
深入C++的new
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:clas转载 2016-01-11 22:14:10 · 312 阅读 · 0 评论 -
C++位操作总结
总结一下位操作常用的几个技巧:1.获取判断某位是否是否为1.bool GetBit(int num, int i){ return ((num & (1 << i)) != 0);} 2.置位将某一位置为1。int SetBit(int num, int i){ return num | (1 << i);}3.清零将第某几位置为0。//第i位清原创 2016-07-29 20:00:43 · 638 阅读 · 0 评论 -
常量对象与常量成员函数
常量对象与常量成员函数来防止修改对象,实现最低权限原则。可以用关键字const来指定对象是不可修改的,任何修改该对象的企图,都会导致编译错误。例如:const Time noon(12,0,0); 声明一个Time 类的常量对象noon,并将它初始化为中午12点。C++不允许在常量对象上调用成员函数,除非成员函数本身也被声明为常量。甚至对不会修改对象的成员函数,也是如转载 2016-05-17 16:40:05 · 300 阅读 · 0 评论 -
结构体内存字节对齐
原文出处:http://blog.csdn.net/hairetz/article/details/4084088写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧. /******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一转载 2016-05-28 10:58:32 · 332 阅读 · 0 评论 -
静态类型与动态类型
转载自:http://www.oschina.net/question/54100_20313为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误,需要理解四个名词: 1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。 2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改转载 2016-04-17 17:02:04 · 309 阅读 · 0 评论 -
虚函数和纯虚函数的区别
文章转载自:http://blog.csdn.net/hackbuteer1/article/details/7558868首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必转载 2016-05-24 15:46:34 · 239 阅读 · 0 评论 -
派生类对象初始化构造过程顺序
#include using namespace std;class A { private: int a; public: A(int x):a(x) { cout <<a <<" "; } };class B: A { private: int b, c; const int d; A x, y; public:转载 2016-05-10 19:55:43 · 1880 阅读 · 0 评论 -
计算机为什么要用补码?
转载自:http://blog.csdn.net/bendanban/article/details/8681456计算机使用补码表示负整数!正整数就用源码来表示。那什么是补码呢?其实源码的补码就是源码的相反数,他们相加得0 。计算负整数的补码:规则就是源码各位取反,然后加1得到。例如:如果我们用8位来表示有符号整数的话,那么十进制1用二进制表示为:[cpp转载 2016-03-26 16:14:49 · 346 阅读 · 0 评论 -
c++primer 第五版 指向常量的指针和常量指针
c++ primer中对于“常量指针”的定义和网上的版本相反,而且删去了"指针常量"的概念,引入了一个新的概念——"指向常量的指针”,但各种类型的含义还是一致的,只是叫法不一样了。举例:int a;const int *p = &a;//与int const* p = &a等效,只取决于*和const的相对位置表示的是“指向常量的指针”,普遍的叫法是“常量指针”。这是指针p指向的对象是原创 2015-05-21 21:18:05 · 2509 阅读 · 1 评论 -
strcmp函数的实现方法
int strcmp(const char* a, const char* b){ if(a == NULL || b == NULL) cout << "error" <<endl; while(*a == *b) { if(*a == '\0') return 0; a++; b++; } return *a - *b;}原创 2016-03-23 21:18:51 · 476 阅读 · 0 评论 -
[C][C++]长度、大小等的详解:sizeof, strlen, size...
转载自:http://www.cnblogs.com/SelaSelah/archive/2012/10/26/2740557.htmlsizeof返回类型、变量的大小,单位是byte(字节,8位)strlen返回C Style的长度虽然看似清晰明了,实际还是有很多细节需要注意的1. 字符串:字符串有两种:C 类型的以及C++ 类型的1.1. C 类转载 2016-02-26 11:36:54 · 603 阅读 · 0 评论 -
C++ operator关键字(操作符重载)
转载内容,原文见博客:http://www.cnblogs.com/xiangxiaodong/archive/2012/02/12/2348144.htmloperator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一转载 2016-02-26 10:19:12 · 387 阅读 · 0 评论 -
C++ assert()的使用方法
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#i转载 2016-03-31 20:48:35 · 297 阅读 · 0 评论 -
二维数组和指向指针的指针
文章转载自:http://www.cnblogs.com/stoneJin/archive/2011/09/21/2184211.html一道面试题引发的问题,首先要知道[]的优先级高于*,题目:char **p,a[6][8]; 问p=a是否会导致程序在以后出现问题?为什么?直接用程序说明:#includevoid main(){ char **p,a[6]转载 2016-03-31 10:41:15 · 325 阅读 · 0 评论 -
C语言字符串长度
转载自:http://blog.csdn.net/kstrwind/article/details/8036555C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项。C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度。在程序里,一般会用strlen()函数或sizeof来获取一个字符串的长度,但这2种方法获取的字符串的长度其实是不一样,我们用转载 2016-01-27 14:32:53 · 1096 阅读 · 0 评论 -
堆内存和栈内存详解(转载)
堆:顺序随意栈:先进后出堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链转载 2015-11-11 20:46:41 · 316 阅读 · 0 评论 -
非常量引用的初始值必须为左值的问题
首先,先看下面一个例子:eg.1#includeiostream>usingnamespace std;int main(){int i =2;double &r =i;return 0;}gcc error: invalid initialization of reference of type 'double&' from expre转载 2015-10-06 20:02:52 · 2817 阅读 · 0 评论 -
itoa函数的实现
#include using namespace std;//itoa函数的实现void MyItoa(int x, char* str){ int i, j; i = j = 0; char tmp[50]; bool negative = false; if(x < 0) { x = -x; negative = true; } while(x > 0)原创 2016-09-01 15:30:08 · 420 阅读 · 0 评论