首页 > 编程 > C++ > 正文

C++编程 学习笔记(二)

2019-11-08 02:56:18
字体:
来源:转载
供稿:网友

第二章 变量和基本类型 1、计算机可寻址的最小内存块称为“字节byte”,存储的基本单元称为“字Word”,字是由几个字节组成的,一般1字节由8比特构成,字则由32或者64比特构成,也就是4或者8字节 2、区间范围:如果我们赋予了区间范围外的数,则对应实际结果是该值对范围取模后所得的余数,赋予超出范围的值时,结果是未定义的,此时程序可能继续工作、可能奔溃,也可能生成垃圾。 3、把负数转换为无符号数类似于直接给无符号数赋一个负值,结果等于这个负数加上无符号数的模 4、可以将整形字面值写作十进制数、八进制数(以0开头)、十六进制数(以0x开头) 5、转义序列like /n之类自己在网上查找 转义字符意义ASCII码值(十进制)/a响铃(BEL)007/b退格(BS) ,将当前位置移到前一列008/f换页(FF),将当前位置移到下页开头012/n换行(LF) ,将当前位置移到下一行开头010/r回车(CR) ,将当前位置移到本行开头013/t水平制表(HT) (跳到下一个TAB位置)009/v垂直制表(VT)011/代表一个反斜线字符”/’092/’代表一个单引号(撇号)字符039/”代表一个双引号字符034/?代表一个问号063/0空字符(NULL)000/ooo1到3位八进制数所代表的任意字符三位八进制/xhh1到2位十六进制所代表的任意字符二位十六进制 6、变量初始化,可以采用下面4种形式: int units_sold = 0; int units_sold = {0}; int units_sold{0}; int units_sold(0); 内置的局部变量必须初始化 7、变量只能被定义一次,但可以被多次声明;变量定义必须且只能出现在一个文件中,其他用到该变量的文件必须对其进行声明,绝对不能重复定义。在变量前面添加extern不赋值是声明,赋值了就抵消了extren的作用,变为定义了。不加extern为声明且定义。 8、命名规则:用户自定义标识符不能连续出现两个下划线,也不能以下划线连大写字母开头。此外,定义函数体外标识符不能以下划线开头。 9、嵌套域与全局局部变量: (1)::i访问全局变量,如std::cout<<::reusedstd;输出的是全局变量 (2)当作用域操作符左侧为空,向全局域发出请求获取作用域操作符右侧名字对应的变量 (3)for循环里面重新赋值,超出了for作用范围还是输出全局时候的赋值 such as:

int i=100,sum=0;for(int i=0;i!=10;++i)sum+=i;std::cout<<i<<""<<sum<<std::endl;

输出i是100 10、引用与指针 引用:引用必须被初始化,就是指向同一个地址,且类型要保持一致,&取地址符 如int ival=1024; int &rel=ival; 指针:存放某个对象的地址,*解引用符 如int dval=2;int *pd=&dval; int *pd2=pd; 可知*pd=2; 空指针:三种形式,第一种常用 int *p1=nullptr; int *p2=0; int *p3=NULL; 注:指针也需要初始化,不然会访问未明的地址,未知是否合法;指针赋值也要相同类型的 void* 指针:可以存放任意类型对象的地址。不能直接操作void指针所指的对象 复合类型指针:指向指针的指针 如 int ival=2014; int *pi=&ival;//pi指向一个int型的数; int **ppi=&pi;//ppi指向一个int型的指针; ppi→pi→ival(1024) 简单读这种复合型的办法是:从右往左阅读其定义 11、一些符号定义 (1)const:表示常量对象,定义为常量后如果赋值就会报错,const int j=42; 指向常量的指针:不能改变指向对象的值 如,const int pie=12; const int *ptr=&pie;(放在外面表示其值) 常量指针:指针本身定为常量,指向的地址不能改变 如,int err=0; int *const ero=&err;(放在里面表示其值) 顶层const:表示指针本身是个常量 底层const:表示指针所指的对象是一个常量 (2)constexPR常量表达式:指值不会改变且在编译过程就能得到计算结果的表达式 可以这样constexpr int limit=mf+1; (3)typedef类别名,别名声明 typedef double wages; wages base,*p;相当于double base,*p; (4)auto:让编译器通过初始值来推算变量的类型,auto定义必须有初始值 如 auto item=vall+vall2;由结果来推断相加结果类型 类型不一致会报错 如 auto i=0,pi=3.14;//wrong (5)decltype:选择并返回操作数的数据类型 decltype(f()) sum=x;//sum的类型就是函数f的返回类型 decltype表达式里面是加了括号的变量,结果一定是引用 decltype((i)) d=&a; 12、自定义数据结构 (1)结构体,类数据结构 struct Sales_data{ std::string bookNo; unsigned units_sold=0; double revenue=0; }在里面已经初始化了,接下来是成员的使用,如 Sales_data data1,data2; data2.bookNo (2)头文件保护符

#ifndef SALESITEM_H// we're here only if SALESITEM_H has not yet been defined #define SALESITEM_H //指令把一个名字设定为预处理变量。。。。。。#endif

自己理解重写一个Sales_data.h的头文件,头文件形式

#ifndef SALES_DATA_H#define SALES_DATA_H#include <string>struct Salse_data{ std::string bookNo; unsigned units_sold = 0; double revenue = 0.0;};#endif
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选