2.C++基础知识(变量、数据类型、string类、引用、运算符)

2.C++基础知识

2.1变量、常量和赋值

变量

  • C++也使用变量的编程构造来命名和储存数据,变量容纳的数据成为这个变量的
  • 编译器将内存位置分配给程序的每一个变量名,我们可以简单的认为内存位置就是用变量名做标签
  • 变量(或者在程序中定义的其他项目)的名称叫标识符,标识符必须字母或下划线开头,后续每个字符只能是字母、数字、或下划线
  • 计算机用不同的编码方式编码不同类型变量,声明变量就是告诉编译器两点,一、应该给一个变量分配多大的内存空间,二、用哪种编码方式将变量的值表示成一串0和1

常量

常量是固定值,在程序执行期间不会改变

  • 整数常量:整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制
  • 浮点常量:浮点常量由整数部分、小数点、小数部分和指数部分组成。
  • 布尔常量:由两个标准的C++关键字组成,true和false
  • 字符常量:由单引号括住的字符,如'a','b',还有转义字符序列'\n','\t'等等
  • 字符串常量:由双引号括住,如:"hello"等等
  • 定义常量方法:两种方法1.使用#define预处理器 2.使用const关键字

修饰符类型

  • signed
  • unsigned
  • long
  • short
  • const

赋值语句

C++中还有一种不同的初始化语法,称为“构造函数语法”
例:

double rate(0.07),time,balance(0.0);

这是因为:以运算符(=)进行初始化这个操作系衍袭自C语言。如果对象属于内建型别,或者对象可以单一值加以初始化,这种方式就没有问题,例如:

string name = “Fibonacci”;

但是对象需要多个初始值,这种方式就没办法完成任务了。以标准库中的复数(complex number)类为例,它需要两个初始值,一个是实部,一个是虚部。以下就是用来处理“多值初始化”的构造函数初始化语法:

#include <complex>
complex<double> purei(0, 7);

小数点后位数控制

cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);

图例为保留两位小数,改变(2)的数字即可改变小数位数

2.2输入和输出

输入流是提供计算机并有程序使用的一系列输入。“流”表明程序将以相同的方式处理所有输入,无论这些输入从何而来。输出流同样如此,是程序生成的一系列输出。

  • <<符号是插入运算符

    using namespace std;
    特定的using指令表明程序准备会用std命名空间。命名空间不是一个名称集合,它代表了一个C++代码主体,其中指定了某些名称的含义,命名空间的作用是将所有C++名称规范划分成不同的集合(称为命名空间),使用命名空间的每一个名称都有一个“规范”(一个定义),命名空间对名称进行划分,但和那些命名空间配合的还有大量的C++代码

2.3 数据类型

基本内置类型

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型 wchar_t

C++也允许定义其他类型的变量,比如枚举、指针、数组、引用、数据结构、类等等

typedef声明

可以使用typedef为一个已有的累死你个去一个新的名字,例如下面语句会告诉编译器,feet是int的另一个名称:

typedef int feet;

枚举类型

枚举类型:枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
定义格式:

enum <类型名> {<枚举常量表>};

应用举例:

enum color_set1 {RED, BLUE, WHITE, BLACK}; // 定义枚举类型color_set1
enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; // 定义枚举类型week

enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT};//定义枚举类型weekday
 //SUN=0,MON=1,依次为0,1,2,3.....

sring类

C++缺乏原生数据类型来直接操作字符串,但在string类的帮助下,可以声明一个string类型的变量来进行操作
用cin将数据读入字符串,在两个字符串之间可以用“+”符号可将两个字符串连接成一个更长的。
例如:

string day,day1,day2;
day1="Monday";
day2="Tuesday";
day=day1+day2;

会连接成以下字符串:

"MondayTuesday"

array(数组)和vector(向量)

  • 要定义array,我们必须指定array的尺度大小——即array所能储存的元素个数。array的尺度必须是一个常量表达式,也就是一个不需要再执行期计算其值的表达式。例如:

    int pell_seq[18];

  • 至于定义vector object,我们首先必须含入vector头文件。vector是个class template(类模板),所以我们必须在类名称之后的角括号内指定其元素型别,其尺度则写在小括号中:此处所给出的尺度并不一定得是个常量表达式例如:

    include <vector>

    vector<int> pell_seq(seq_size);

引用

引用是隐式的指针,引用就是给一个变量起一个别名,格式为 数据类型 & 引用名 = 变量名;
这里的&并不是取地址符号,而是起标识作用,引用声明之后,相当于目标变量有两个名称

int a = 10;
int &b = a;

对a与b进行操作,都会改变内存中的数据。

注意

  1. 引用在定义时必须初始化,如int &b;语句是错误的
  2. 引用在初始是只能绑定左值,不能绑定常量,如int &b = 10;是错误的
  3. 引用一旦初始化,其值就不能更改,即不能再做别的变量的引用
  4. 数组不能定义引用,因为数组是一组数据,不能定义其别名

指针与引用的区别
指针是一种数据类型而引用不是,指针可以转换为它所指向的变量的数据类型,如下:

int a = 10;
int *p = &a;
double *pd = (double*)p;

经过转换,pd指针就可以指向double类型数据,而引用则必须要和目标变量的数据类型相同,无法进行数据类型转换。

2.4运算符

算数运算符

+、-、*、/、%、++、--

关系运算符

==、!=、>、<、>=、<=

逻辑运算符

&&、||、!

位运算符

&、|、^的真值表:

p q p&q plq p^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

赋值运算符

=、+=、-=、*=、/=、%=

杂项运算符

运算符 描述
sizeof sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。
Condition ? X : Y 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。
, 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。
. (点)和 ->(箭头) 成员运算符用于引用类、结构和共用体的成员。
Cast 强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。
& 指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。
* 指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容