1:静态变量static可以分为静态局部变量和静态全局变量,静态局部变量的值在函数调用结束后不消失,静态全局变量只能在本源文件中使用. 静态变量属于静态存储方式,它具有以下特点: (1)静态变量在函数内定义,在程序退出时释放,在整个程序的运行期间都不释放,也就是说它的生存周期为整个源程序. (2)静态变量的作用域与自动变量相同,在函数内定义就在函数内使用,尽管改变量还继续存在,但是不能使用它,如果再次调用定义它的函数时,便可继续使用它. (3)编译器会为静态局部变量赋予0值. 代码如下: //…
1:通过指针引用数组,需要先声明一个数组,再声明一个指针. int a[10]; int *p; 然后通过&运算符获取数组中元素的地址,再将地址值赋给指针变量. p=&a[0]; 代码实例如下: // 6.9.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ]; int *p; //利用循环,分别为10个元素赋…
1:代码如下: // 6.11.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void main() { ][]={,,,,,,,,,,,}; int *p; p=a[]; ;i<sizeof(a)/sizeof(int);i++) { cout << "address:&q…
1:代码如下: // 3.18.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ; int i; ;i<=;i++) //for循环语句 sum+=i; cout << "数字1-10的和:" << sum << endl; } 运行结果:…
1:代码如下: // 3.15.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ,i=; do { sum=sum+i; i++; }); cout << "数字1-10之和 :" << sum << endl; } 运行结果:…
1:代码如下: // 3.14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ,i=; ) { sum=sum+i; i++; } cout << "数字1-10之和 :" << sum << endl; } 运行结果:…
1:使用字面值(如1.3.15f.true),或者表达式等临时变量作为函数实参传递时,按左值引用传递参数会被编译器阻止.而进行值传递时,将产生一个和参数同等大小的副本.C++11提供了右值引用传递参数,不申请局部变量,也不会产生参数副本. // 5.20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; static float global = 1.11…
1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码.定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能. 2:函数模板定义的一般形式如下: template <类型形式参数> 返回类型 函数名(形式参数表) { ...//函数实现 } 其中template为关键字,表示定义一个模板,尖括号“<>”中为模板参数,模板参数主要有两种,一种是模板类型参数,另一种是模板非类型参数.上述代码中定义的模板使用的是模板类型参数,模板类型参数使用…
1:抽象类通常作为其他类的父类,如果从抽象类派生的子类是抽象类,则子类必须实现父类中的所有纯虚函数.代码如下: // 8.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; class CEmployee //定义CEmployee类 { public: int m_ID; //定义数据成员 ]; //定义数据成员 ]; //定义数据成员 ; //定义…
1:曾经介绍过string类型的数据,它是C++标准模版库提供的一个类.string类支持使用加号“+”连接两个string对象.但是使用两个string对象相减确实非法的,其中的原理就是C++所提供类中重载运算符的功能.在string类中定义了运算符“+”和“+=”两个符号的使用方法,这种使用方法的实质是一种成员函数. 关键字operator是专门实现类运算符重载的关键字.在类成员中,定义一个这样形式的函数: 返回值类型 operator 重载运算符(参数列表) 以box类为例,我们可以将加号…
1:对于类的非静态成员,每个对象都有自己的一份拷贝,即每个对象都有自己的数据成员,不过成员函数却是每个对象共享的.那么调用共享的成员函数如何找到自己的数据成员呢?答案是通过类中隐藏的this指针. 2:示例代码: // 7.6.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; class CBook //定义一个CBook类 { public: int m…
1:静态数据在程序开始时即获得空间,直到程序结束后才被收回.静态数据可以声明在函数体内,也可以声明在函数体外. 类中的静态成员与非静态成员有很大区别.从使用上来将,调用静态成员不需要实例化对象,而是以如下形式调用: 类名::静态成员 从类的设计思想来看,静态成员应该是类共用的.若想在静态函数中使用某些成员变量,可以在形参列表中实例化本类的对象,这样就可以在函数中使用该对象的成员. 2:实例代码如下: (1)human.h #include <string> using std::string;…
1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数组的首地址.&a[m][n]就是第m行n列元素的地址 (3)&a[0]是第0行的首地址,当然&a[n]就是第n行的首地址 (4)a[0]+(n-1)表示第0行第n个元素 (5)*(*(a+n)+m)表示第n行第m列 (6)*(a[n]+m)表示第n行第m列元素 2:代码如下: // 6…
1:代码如下: // 6.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ][]={{,,,}, {,,,}, {,,,}}; ]={}; int row,col,i; cout << "array old" <<endl; ;row<;row++) { ;col<…
1:一维数组的初始化有两种,一种是单个逐一赋值,一种是使用聚合方式赋值.聚合方式的例子如下: int a[3]={1,2,3}; int a[]={1,2,3};//编译器能够获得数组元素的个数 int a[5]={1,2,3};//前3个元素被赋值,后2个元素的值为0 2:二维数组的初始化也分为单个元素逐一赋值和使用聚合方式赋值两种.聚合方式的例子如下: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int a[3][4]={{1,2,3,4},{5,6,…
1:代码如下: // 6.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ]; //利用循环,分别为10个元素赋值 ;i<;i++) a[i]=i; //将数组中的10个元素输出到显示设备 ;i<;i++) cout << a[i] << endl; } 运行结果:…
1:引用传递参数与指针传递参数能达到同样的目的.指针传递参数也属于一种值传递,其传递的是指针变量的副本.如果使用指针的引用,就可以达到在函数体内改变指针地址的目的.运行代码如下: // 5.19.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using std::cout; using std::endl; ;//静态全局变量 void getMax(int* &p)//指针的引用 {…
1:如不加特殊说明,一般认为引用指的都是左值引用.引用实际上是一种隐式指针,它为对象建立一个别名,通过操作符&来实现,引用的形式如下: 数据类型 & 表达式: 例如: int a=10; int & ia=a; ia=2; 上面的程序定义了一个引用变量ia,它是变量名a的别名,对ia的操作与对a的操作完全一样.“ia=2”把2赋给a,“&ia”返回a的地址.执行“ia=2”和执行“a=2”等价. 使用引用的说明如下: (1)一个C++引用被初始化后,无法使用它再去引用另一个…
1:代码如下: // 5.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using std::cout; using std::endl; int* pointerGet(int* p)//定义一个返回指针类型的函数 { ; cout<<"函数体中i的地址"<<&i<<endl; cout<<"函数体中…
1:运行代码: // 5.9.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using std::cout; using std::endl; int plus(int b) { ; } int main() { void* pV = NULL; ; pV = plus; cout<<"执行pV指向的函数:"<<endl; result=((); c…
1:代码如下: // 4.6.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; int Add(int x ,int y) //定义第一个重载函数 { cout << "int add" << endl; //输出信息 return x + y; //设置函数返回值 } double Add(double x,d…
1:代码如下: // 3.25.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; int main(int argc, _TCHAR* argv[]) { //若直接使用for循环遍历1773-2012年,则需要执行240次判断. int year; //1773开始的第一个闰年 ;//代表从何年开始 ;//代表从何年结束 //其实可以将以下for循环条件…
1:代码如下: // 3.21.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ; //定义一个整型变量,初始化为0 ; //定义一个整型变量,初始化为0 label: //定义一个标签 ivar++; //ivar自加1 num += ivar; //累加求和 ) //判断ivar是否小于10 { goto label; /…
1:continue不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分.代码如下: // 3.20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int i,n,sum; sum=; cout<< "请输入10个整数" << endl; ;i<=;i++…
1:代码如下: // 3.19.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int i,n,sum; sum=; cout<< "请输入10个整数" << endl; ;i<=;i++) { cout<< i<< ":" ; ci…
1:代码如下: // 3.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void main() { cout<<"输入一个A-D范围内的大写字母作为成绩评价"<<endl; char iInput; cin >> iInput; switch…
1:代码如下: // 2.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ; double y=-3.1415; cout << "x="; cout.width();//输出字符串的宽度为10 cout << x; cout << "y=";…
1:代码如下: #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void main() { ;//0x代表16进制, cout << i << endl;//以10进制输出 cout << hex << i << endl;//以16进制输出 cout << hex <<…
1:代码如下: // 2.8.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void main() { ; //对b赋初值 cout << b << endl; //输出: 123456 cout << hex << b << endl; //…
1:代码如下: // 2.3.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" int main() { ; /*定义长整型变量,为其赋值*/ printf("the Long is %ld\n",iLong); /*输出长整型变量*/ printf("the string is: %s\n","LOVE"); /*输出字符串*/ printf("the string is: %…