C++学习笔记(二)--基础
1.浮点型数值不管写成什么样 都是以指数形式保存在内存中 数符|数字部分|指数部分 例:+0.33E10 数字部分的整数部分不能大于1,小数点后面不能是0.
2.字符数据是以整数形式保存在内存中的(ASCII码,范围0-255).所以在一定范围内,字符数据与int型可以互用.
3.符号常量 #define salary 50 (编译器将预编译)好处:含义清楚 一改全改
4.字符串类型 "abc" 编译器编译时自动加"\0" 作为结束符,即"abc\0"占4个字节.
5.常变量 const int a = 255 ;在声明时就要赋值,之后不可被更改.
6.i++先使用i再自增1,++i先自增1再使用i.
7.逗号表达式取得是最后一个式子的值,a=b,c=10 值为10 ; max((10,20),a+10) 值为20
8.getchar()输入一个字符, putchar()输出一个字符。注意:是字符,不是字符串.
9.保留了C语言的scanf(),printf(),不过不常用.
10.条件表达式:表达式1?表达式2:表达式3 执行过程:判断表达式1是否成立,成立=>执行表达式2,否则执行表达式3.
11.C语言中while语句,if else语句、for语句、switch case语句等任然适用.
12.函数声明可以在主调函数中,也可以在主调函数外.
13.内嵌(内置)函数,能有效加快函数调用的效率,即在编译时,将调用的函数代码直接嵌入到要调用该函数的地方,而不是再将流程转出去,直接在函数类型前加一个关键字 inline 即可:inline int max(void);调用函数处仍为max(); 小规模函数才使用,含有复杂控制语句,如switch 循环语句等就不适合.
14.函数重载(function overloading):函数同名,一物多用,编译器可以根据实参的类型找到与之匹配的函数,重载要求参数类型或者个数、参数顺序不同,函数体可以相同也可以不相同.
使用函数重载时,同名函数的功能尽力相似。
#include<iostream>
using namespace std;
int main(){
int max( int a, int b, int c );
int max( int a, int b );
int a=8, b=-12, c=27;
cout <<"max( a,b,c )=" <<max( a,b,c ) <<endl;
cout <<"max( a,b )=" <<max( a,b ) <<endl;
return 0;
}
int max( int a, int b, int c ){
if( a>b ) a = b;
if( c>a ) a = c;
return a;
}
int max( int a, int b ){
if( a>b ) return a;
else return b;
}
15.函数模板:用于函数体形同,函数参数个数相同,唯独类型不同的情况。
定义: template <typename T,.....> T 是类型 或使用(不常用)template <class T,.....>
typename 表示类型名
示例:
template <typename T>
T max( T a, T b ){
return a>b?a:b;
}
编译运行时,由实参来指定类型。
16.带默认参数的函数:float max(float r = 9.02); 即调用max()时默认实参r=9.02,要重新赋值:max(4.4);即可。其他形式:int mina(int a, int b=10); 调用mina(20) ,实际为mina(20,10);
注意:
a.默认值的参数一定放最右端,因为实参赋值是从左到右的!
b.函数在调用前定义,应直接在定义中给出默认值,若是函数定义在调用后,则在函数声明中需给出默认值,在定义的时候可以省略不写默认值。
c.不能既重载又带默认参数,易出现二义性,程序不知道执行哪个函数,机器很笨的。
如果在函数声明时为 float f(int a = 10);而在定义时为float f(int a = 20){...},则以声明时的为默认值,定义的无效,其实只要在声明时指定好就行了,定义的时候不必再多此一举
17.C++中规定一个函数不能完整的再嵌套另一个函数,但是可以嵌套调用。
18.递归函数:即函数调用函数本身。执行过程分两个阶段:回推 递推 二者之间的转折点为递归结束条件,一般使用if语句。
19.变量空间属性:
局部变量=>函数内部,或者复合语句内部有效
全局变量=>函数外部,从定义处开始有效,少用为好
变量时间属性->存储期:
静态存储期 程序运行期间,系统对变量分配固定的的存储空间 静态存储区(空间)<-全局变量,占固定的存储单元,程序执行完释放
动态存储期 程序运行期间,系统对变量动态地分配存储空间 动态存储区(空间)<-函数形参,函数中的自动变量(未加static修饰),函数调用时的现场保护和返回地址等。
20.变量存储类别:
a.auto 自动变量,可以省略不写 如:int a;为动态存储;
b.static声明的静态局部变量, 在函数执行完,该变量保持执行完的值,不会立刻销毁,在整个运行期间都占存储单元.
例:
#include<iostream>
using namespace std;
int f(int a){
auto int b = 0;
static c = 3;/*第一次调用后c值改变,保存改变后的值,再次调用不再执行此句,如果未指明c的值,编译时,默认赋值为0*/ b = b+1;
c = c+1;
return a+b+c;
}
int main(void){
int a = 2,i;
for(i=0;i<3;i++)
cout <<f(a) <<"";
cout <<endl;
return 0;
}
执行结果:7 8 9;
c.register 寄存器变量 <-了解即可
d.extern 提前引用声明,即单文件时使全局变量的作用范围扩大到整个文件,而不是从定义处开始。
若是多个文件 : file1.cpp file2.cpp
int a; extern int a;/*做外部变量声明,此时两个文件都可使用同一个变量a.*/
file1.cpp file2.cpp
static int a; extern int a; /*此时file1的a只能被file1使用,file2正常使用自己的a;static修饰的变量a,此时被称为静态外部变量。这两种都是编译时分配内存的,即静态存储。*/
C++学习笔记(二)--基础的更多相关文章
- https学习笔记二----基础密码学知识和python pycrypto库的介绍使用
在更详细的学习HTTPS之前,我也觉得很有必要学习下HTTPS经常用到的加密编码技术的背景知识.密码学是对报文进行编解码的机制和技巧.可以用来加密数据,比如数据加密常用的AES/ECB/PKCS5Pa ...
- tensorflow学习笔记二:入门基础 好教程 可用
http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础 TensorFlow用张量这种数据结构来表示所有的数据.用一 ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记
注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
随机推荐
- django学习笔记(二)
上节内容回顾: 1.Django请求生命周期 -> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串 -> URL对应关系(匹配) -> 视图函数 -> ...
- C# 共享文件读取(转)
using System;using System.Runtime.InteropServices;using BOOL = System.Boolean;using DWORD = System.U ...
- Linux查看当前目录下所有文件中包含map的行记录
find yaochi_e.prm |xargs grep -ri "map" grep -n "map" *.prm|grep -v "\-\-ma ...
- Maya多版本下载与激活方法
目录 1. 安装激活说明 1. 安装激活说明 Maya2019:https://www.cnblogs.com/coco56/p/11425559.html Maya2017:https://www. ...
- This page includes a password or credit card input in a non-secure context. A warning has been added
此页面包含非安全上下文中的密码或信用卡输入.URL栏中添加了一个警告.有关更多信息,请参阅https://goo.gl/zmWq3m. 因为你的页面里面有input type是password,谷歌浏 ...
- python面向对象的三大特征--继承
#什么时候用继承 #1.当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好 #2.当类之间有很多相同的功能,提供这些共同的功能做成基类,用继承比较好 class Dad: " ...
- [Luogu2014]选课(树形dp)
[Luogu2014]选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课 ...
- less:注释
less有两种注释方法,一种是// 一种是/**/ 这两者的区别是/**/是会被编译成css里面,而//则不会 举个例子(使用的less在线编译器) 我们看到//注释并没有编译到css里面
- Java 逻辑运算符相关解析
问:定简单说说 Java 中 & 与 && 有什么区别?| 与 || 呢? 答:& 是位运算符,&& 是布尔逻辑运算符,| 与 || 类似同理.在进行逻 ...
- 【java】Split函数踩坑记
先看一段代码: String line = "openssh|7.1"; String[] pkg = line.split("|"); System.out. ...