C++基础之数据类型和表达式
Posted lovehelenmore
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++基础之数据类型和表达式相关的知识,希望对你有一定的参考价值。
面向对象特征
1)封装 (类)
2)继承(基类和派生类)
3)多态(通过定义虚函数支持动态联编)
面向对象三要素(类-创建对象的样板,对象,继承)
C++基本数据类型
整型 int (32位机,字宽4字节,16位机器 字宽2字节)
字符型 char
浮点型(实型)float(单精度浮点型,4个字节,约6位有效数字)和double(双精度浮点型 8个字节,约12位有效数字)
空值型 void (一个字节)
数据类型修饰符(默认signed)
signed
unsigned
long
short 说明:int前有修饰符时,可以省略关键字int
常量
1)整型常量 八进制以0为前缀,十六进制 0x为前缀,长整型L后缀,32765L,无符号型后缀U,eg 49321ul
2)浮点型常量 eg 0.5E2f f表示单精度类型,3.6e5L l表示longdouble
3)字符常量 eg ‘A’ 或者 \101 或者 \x41
4)字符串常量“abcd”,\0结束符
5)符号常量 const int size=80; 定义符号常量必须初始化
数组
枚举 若干个有名字的整型常量的集合,默认情况最前面第一个值为0,后面自动+1
指针和引用
int(*pf)() //pf是一个指向函数的指针,函数返回值类型为int
1.指针的类型从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。
让我们看看例一中各个指针的类型:
(1)int*ptr;//指针的类型是int*
(2)char*ptr;//指针的类型是char*
(3)int**ptr;//指针的类型是int**
(4)int(*ptr)[3];//指针的类型是int(*)[3]
2.指针所指向的类型当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。
例如:(1)int*ptr; //指针所指向的类型是int
(2)char*ptr; //指针所指向的的类型是char
(3)int**ptr; //指针所指向的的类型是int*
(4)int(*ptr)[3]; //指针所指向的的类型是int()[3]
(5)int*(*ptr)[4]; //指针所指向的的类型是int*()[4]
指针的运算
一个指针ptrold 加(减)一个整数n 后,结果是一个新的指针ptrnew,ptrnew 的类型和ptrold 的类型相同,
ptrnew 所指向的类型和ptrold所指向的类型也相同。ptrnew 的值将比ptrold 的值增加(减少)了n 乘sizeof(ptrold 所指向的类型)个字节。
就是说,ptrnew 所指向的内存区将比ptrold 所指向的内存区向高(低)地址方向移动了n 乘sizeof(ptrold 所指向的类型)个字节。
指针和指针进行加减:两个指针不能进行加法运算,这是非法操作,因为进行加法后,得到的结果指向一个不知所向的地方,而且毫无意义。
两个指针可以进行减法操作,但必须类型相同,差便是两个指针直接相差得元素个数。
数组元素可以用下标表示,也可以用指针表示,指针表示优于下标表示
int a[n] 下标表示 *(a+i)
int b[3][5] 下标表示*((*(b+i))+j)
引用是另一个变量的别名,不是变量,不占内存单元
运算符
算术运算符 -(取负) +(取正) +(加) -(减) *(乘) /(除) %(余数) ++ --(前缀++a 表达式为原变量值加1,后缀a++表达式的值不变)
关系运算符 < <= > >= == !=
逻辑运算符 !(逻辑求反) &&(逻辑与) ||(逻辑或)
位操作运算符 ~(按位求反) &(按位与) |(按位或) ^(按位异或) <<(左移,指定位数向左移动,移出的空位补0) >>(右移,指定位数向右移动,移出的空位补0或者补符号位)
赋值运算符= += -+ *= /= %= &= |= ^= <<= >>=
其他运算符 d1?d2:d3 , sizeof()
C++可以自定义类型
typedef <已有类型名> <新类型名表>;
作用
1)改善程序可读性
2)减少变量的过于繁琐
3)提高程序的可移植性
以上是关于C++基础之数据类型和表达式的主要内容,如果未能解决你的问题,请参考以下文章