华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第2章 C++的变量、类型及函数

第2章C++的变量、类型及函数 本章内容: ■2.1声明及定义 ■2.2类型定义 ■2.3引用类型 ■2.4函数参数 ■2.5函数内联
第2章 C++的变量、类型及函数 本章内容: 2.1 声明及定义 2.2 类型定义 2.3 引用类型 2.4 函数参数 2.5 函数内联

声明及定义 声明:对名及其内涵的不完整描述。 定义:对该名及其内涵的完整描述。 名可以声明多次,但只能定义一次。 ■ 类型声明:前向引用声明只说明类名。 class Student; ■ 变量声明:类型、变量名。定义再加初 值。 ■ 函数声明:函数原型只说明函数名,返回 类型以及函数参数。定义再加函数体
2.1 声明及定义 声明:对名及其内涵的不完整描述。 定义:对该名及其内涵的完整描述。 名可以声明多次,但只能定义一次。 类型声明:前向引用声明只说明类名。 class Student; 变量声明:类型、变量名。定义再加初 值。 函数声明:函数原型只说明函数名,返回 类型以及函数参数。定义再加函数体

.1声明及定义 C语言:一般只允许以常量表达式初始化变 量,局部非静态变量可以用任意表达式初始 化。变量声明和定义必在语句前。 C++语言:所有变量都可以用任意表达式初始 化。变量声明和定义不必在语句前。兼容C,局 部非静态变量如不初试化,则其值不确定。 ■常量表达式:编译时可计算出常量值。 任意表达式:常量、变量、函数调用等组成。 只能在运行时计算出值
2.1 声明及定义 C语言:一般只允许以常量表达式初始化变 量,局部非静态变量可以用任意表达式初始 化。变量声明和定义必在语句前。 C++语言:所有变量都可以用任意表达式初始 化。变量声明和定义不必在语句前。兼容C,局 部非静态变量如不初试化,则其值不确定。 常量表达式:编译时可计算出常量值。 任意表达式:常量、变量、函数调用等组成。 只能在运行时计算出值

.1声明及定义 常量表达式:3, 3.14*3*3,size2, sizeof(int[2]),sizeof(3+printf("ABC")) 任意表达式: ·常量表达式 ·A,3+A printf(“ABCDEF) ·3+printf(“ABCDEF) ■注意:int[2]是类型表达式,而非值表达式。 值表达式包括常量表达式和任意表达式。值表 达式又可分为左值或右值表达式
2.1 声明及定义 常量表达式: 3, 3.14*3*3, size 2, sizeof(int[2]), sizeof(3+printf( “ABC ”)) 任意表达式: 常量表达式 A, 3+A printf(“ABCDEF”) 3+ printf(“ABCDEF”) 注意: int[2]是类型表达式,而非值表达式。 值表达式包括常量表达式和任意表达式。值表 达式又可分为左值或右值表达式

,1声明及定义 左值表达式:可以出现在等号左边的表达式。 。非只读类型的变量:intx;x=2; 引用非只读类型的变量:int&y=x;y=3; 0 指向非只读单元的内容访问:intp=&x;p=1; 引用非只读类型的函数:int&f(){};f0=3; 前置+和一运算,赋值运算:((x=2)=3;(+x)=5; ■右值表达式:只能出现在等号右边的表达式。 注意:左值表达式是右值表达式,反之不成 立。 某些变量或参数传递只能用左值表达式。如非 只读类型的引用变量或参数
2.1 声明及定义 左值表达式:可以出现在等号左边的表达式 。 非只读类型的变量:int x; x=2; 引用非只读类型的变量:int &y=x; y=3; 指向非只读单元的内容访问:int *p=&x; *p=1; 引用非只读类型的函数: int &f( ){ }; f()=3; 前置++和 —运算,赋值运算: (x=2)=3; (++x)=5; 右值表达式:只能出现在等号右边的表达式。 注意:左值表达式是右值表达式,反之不成 立。 某些变量或参数传递只能用左值表达式。如非 只读类型的引用变量或参数

2.1声明及定义 【例2.1】C++的声明、定义及初试化。 #include extern int h=0;/C变量定义 extern int i; /1C变量声明 ■ int i; //C变量定义,缺省初始化i=0 int j=i+4; //C++变量定义,初始化ji+4 static int p=jt5;/C++变量定义,初始化为p=jt5
2.1 声明及定义 【例2.1 】C++的声明、定义及初试化。 #include extern int h=0; //C变量定义 extern int i; //C变量声明 int i; //C变量定义,缺省初始化i=0 int j=i+4; //C++变量定义,初始化j=i+4 static int p=j+5;//C++变量定义,初始化为p=j+5

2.1声明及定义 void main(void){ static int n=j+5; /C+定义,初始化为n=j+5 int i=20; /C定义,初始化为i=20 int k; /C声明,k未初始化值不定 for(int j=i+2;j<9;j++) /1C+定义,初始化为j=i+2 int m=5; /C定义,初始化为m=5 k+=m; /警告,k未初始化就被引用 }; int q=23; /C+在语句中间定义变量 scanf ("%d",&j); /输入main外定义的变量j struct{intk,m;}b={jt3,5};/C+定义,任意表达式初始化 inta[4幻={scanf("%d”",&k),1};/C+定义,任意表达式初始化 }
2.1 声明及定义 void main(void){ static int n=j+5; //C++定义,初始化为n=j+5 int i=20; //C定义,初始化为i=20 int k; //C声明,k未初始化值不定 for(int j=i+2;j<9;j++) //C++定义,初始化为j=i+2 { int m=5; //C定义,初始化为m=5 k+=m; //警告,k未初始化就被引用 }; int q=23; //C++在语句中间定义变量 scanf("%d",&j); //输入main外定义的变量j struct {int k,m;}b={j+3,5};//C++定义,任意表达式初始化 int a[4]={scanf("%d",&k),1};//C++定义,任意表达式初始化 }

,1声明及定义 C允许初试化局部静态数组。C+的局部自动 数组通常在栈段分配空间,若初始化则还会在 数据段分配空间。 程序X.CPP: void main(void)/空间在栈段 int array[10]; 程序Y.CPP: ■ void main(void)/空间在数据段 static int array[10]=(1,2}; 程序Z.CPP: void main(void)/空间在栈段和数据段 int array[10]={1};
2.1 声明及定义 C允许初试化局部静态数组。C++的局部自动 数组通常在栈段分配空间,若初始化则还会在 数据段分配空间。 程序X.CPP: void main(void) //空间在栈段 { int array[10]; } 程序Y.CPP: void main(void) //空间在数据段 { static int array[10]={1, 2};} 程序Z.CPP: void main(void) //空间在栈段和数据段 { int array[10]={1}; }

.1声明及定义 简单类型全局变量:若初始化表达式是任意表 达式,则初始值由编译生成的开工函数在运行 时计算得到。 ▣复杂类型全局变量:即全局对象,其初始化由 开工函数调用其相应的构造函数完成。 ·注意:开工函数先于main执行,收工函数后于 main执行。收工函数负责自动执行全局对象的 析构函数。因此,程序被看作一个对象,有构 造(生),活动(main),析构(死)
2.1 声明及定义 简单类型全局变量:若初始化表达式是任意表 达式,则初始值由编译生成的开工函数在运行 时计算得到。 复杂类型全局变量:即全局对象,其初始化由 开工函数调用其相应的构造函数完成。 注意:开工函数先于main执行,收工函数后于 main执行。收工函数负责自动执行全局对象的 析构函数。因此,程序被看作一个对象,有构 造(生),活动(main),析构(死)

.1声明及定义 #include long sum(void){ int m,n,S=0; cout>n,m=1;m<=n;m++) s+=m; cout<<\nSum="<<s; return s; long x=sum();/开工函数初始化x调用sum ■ void main(void){}//空函数有运行结果
2.1 声明及定义 #include long sum(void){ int m, n, s=0; cout>n,m=1; m<=n; m++) s+=m; cout<<"\nSum="<<s; return s; } long x=sum( );//开工函数初始化x调用sum void main(void){ } //空函数有运行结果
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第1章 引论(李瑞轩).pdf
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)课程简介(李瑞轩).pdf
- 南京大学:《软件工程导论 Introduction to Software Engineering Research》课程教学电子教案(课件讲义)04 Conduct Rigorous and Scientific Research(Experiment Design in Software Engineering Research).pdf
- 《编译原理 Principles and Techniques of Compilers》课程教学资源(学习资料)Assemblers,Linkers,and the SPIM Simulator(MIPS32 and SPIM).pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(实验讲义)实验四 目标代码生成.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(实验讲义)实验三 中间代码生成.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(实验讲义)实验二 语义分析.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(实验讲义)实验一 词法分析与语法分析.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)编译课程复习(许畅).pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)第一章 引论(许畅).pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)第三章 词法分析.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)第四章 语法分析.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)第五章 语法制导的翻译.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)第六章 中间代码生成.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)第七章 运行时刻环境.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)第八章 代码生成.pdf
- 南京大学:《编译原理 Principles and Techniques of Compilers》课程教学电子教案(课件讲义)第九章 机器无关的优化.pdf
- 中国科学技术大学:Robust Speech Recognition with Speech Enhanced Deep Neural Networks.pdf
- 西安电子科技大学:《数据结构与算法分析 Data Structure and Algorithm Analysis》课程教学资源(PPT课件讲稿)01 Lists, Stacks, and Queues.ppt
- 西安电子科技大学:《数据结构与算法分析 Data Structure and Algorithm Analysis》课程教学资源(PPT课件讲稿)02 Trees(主讲:刘静).ppt
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第3章 C++的类.pdf
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第4章 作用域及成员指针.pdf
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第5章 静态成员与友元.pdf
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第6章 单继承类.pdf
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第7章 虚函数(李瑞轩).pdf
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第8章 多继承类.pdf
- 华中科技大学:《面向对象程序设计》课程教学资源(课件讲稿)第9章 运算符重载.pdf
- 哈尔滨学院:《程序设计(C语言》课程教学大纲(理工类)Program Design(C language).pdf
- 运城学院:《微机原理与接口技术》课程教学大纲 Principles and Application of Micro-Computer(赵润林、朱铭琳、王晓丽).pdf
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题1.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题2 参考答案.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题2.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题1 参考答案.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题3.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题4 参考答案.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题4.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题3 参考答案.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题5.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题5 参考答案.doc
- 运城学院:《微机原理与接口技术》课程教学资源(仿真式题库)试题6 参考答案.doc