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:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
随机推荐
- Jquery实例链接
jquery学习笔记 jquery实现全选,反选,取消的操作 左侧菜单收缩的实现(包括,筛选器,addclass.removeclass.绑定事件,链式编程) 模态对话框实现增加删除表格里面的内容 j ...
- FMC228- 四路16位1.2Gsps DA FMC子卡模块
FMC228- 四路16位1.2Gsps DA FMC子卡模块 一.概述 FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设备中,特别是在xilinx公司的所有开发板中 ...
- 了解Greenplum (2)
一.目的 1. 理解Greenplum中的数据分布策略(random 和 distribution),分析不同分布策略的优劣:2. 理解查询执行中的数据广播和数据重分布,分析在何种情况下选择哪种策略, ...
- Kata Container 介绍
docker容器,性能高,不安全:VM虚拟机,安全性好,性能损耗大:Kata Container轻量级虚拟机的容器,即安全,性能也高. 开源容器项目Kata Containers,旨在将虚拟机(VM) ...
- Firewalld--03 富规则、备份恢复、开启内部上网
目录 防火墙富规则.备份恢复.开启内部上网 1. 防火墙富规则策略 2.Firewalld备份恢复 3. 防火墙开启内部上网 防火墙富规则.备份恢复.开启内部上网 1. 防火墙富规则策略 Fire ...
- javaweb各种框架组合案例(七):springboot+jdbcTemplete+通用dao+restful
一.介绍 1.springboot是spring项目的总结+整合 当我们搭smm,ssh,ssjdbc等组合框架时,各种配置不胜其烦,不仅是配置问题,在添加各种依赖时也是让人头疼,关键有些jar包之间 ...
- SSM架构 (Spring 5.0.2)添加Jackson
第一步添加jsckson的包 <dependency> <groupId>javax.annotation</groupId> <artifactId> ...
- P2617 Dynamic Rankings(待修改区间第k大)
题目链接:https://www.luogu.org/problemnew/show/P2617 题目: 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的 ...
- Redux中间件之redux-thunk使用详解
Redux的核心概念其实很简单:将需要修改的state都存入到store里,发起一个action用来描述发生了什么,用reducers描述action如何改变state tree .创建store的时 ...
- C++中的const_cast
开发环境 Qt Creator 4.8.2 编译器版本 MinGw 32-bit const_cast 用法: const_cast<type_id> (expression) 说明: 该 ...