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