一般来说想要成为优秀的C++开发工程师,必然需要了解清楚C++的数据类型以及其他基础信息。那么C++数据类型包括哪些呢?
1、文字常量:
C++预定义了一组数值数据类型,可以用来表示整数、浮点数和单个字符。此外,还预定义了用来表示字符串的字符数组。
字符型char,通常用来表示单个字符和小整数。占一个字节(byte)。
整型int、短整型short、长整型long,它们分别代表不同长度的整数值。short占2个字节,int占4个字节,long占8个字节。
浮点型float、双精度double和长双精度longdouble,分别表示单精度浮点数、双精度浮点数和扩展精度的浮点数值。float占4个字节,double占8个字节,longdouble占16个字节。
当一个数值,例如0,出现在程序中时,它被称为文字常量(literalconstant):
称之为“文字”是因为我们只能以它的值的形式指代它。
称之为“常量”是因为它的值不能被改变。
文字变量是不可寻址的(nonaddressable),它的值也是存储在机器内存的某个地方,但没办法访问它们的地址。
2、变量:
变量提供了一个有名字的内存存储区,可以通过程序对其进行读、写和处理。C++中的每个符号变量都与一个特定的数据类型相关联,这个类型决定了相关内存的大小、布局、能够存储在该内存区的值的范围以及可以应用其上的操作集。
变量名:变量的标识符(identifier),由字母、数字以及下划线字符组成。
必须以字母或下划线开头;
区分大小写字母;
变量名不能用C++关键字;
对象的定义:
一个简单的对象定义由一个类型指示符后面跟一个名字构成,以分号结束。
doublesalary;
doublewage;
intmonth;
intday;
intyear;
unsignedlongdistance;
当同类型的多个标识符被定义的时候,在类型指示符后面跟一个由逗号分开的标识符列表。列表可跨越多行,最后以分号结束。
doublesalary,wage;
intmonth,day,year;
unsignedlongdistance;
一个简单的定义指定了变量的类型和标识符,它并不提供初始值。如果一个变量在全局域(globalscope)内定义,系统会保证给它提供初始值0。
如果变量是局部域(localscope)内定义或通过new表达式动态分配的,则系统不会向它提供初始值0,这些对象被称为是未初始化的(uninitialized),与它关联的内存区中含有一个随机位串。
3、指针类型:
指针持有另一个对象的地址,使我们能够间接的操作这个对象。每个指针都有一个相关的类型。
指针的定义:
通过在标识符前加一个解引用操作符(*)来定义指针。在逗号分隔的标识符列表中,每个将用作指针的标识符前都必须加上解引用操作符(*)。
long*lp,lp2;
lp是一个指向long类型对象的指针,而lp2则是一个long型的数据对象,不是指针。
intival=1024;
int*pi=0;//pi被初始化为"没有指向任何对象"
int*pi2=&ival;//pi2被初始化为ival的地址
pi=pi2;//pi和pi2现在都指向的ival的地址
pi2=0;//现在pi2没有指向任何对象
pi=ival;//错误:pi被赋以int值ival
*pi=10;//解除pi的引用,为它所指向对象ival,赋值
4、const限定修饰符:
const把一个对象转换成一个常量(constant),在程序中任何改变这个值的企图都将导致编译错误。因此,它被称为是只读(read-only)。
constintbufSize=512;
bufSize=0;//错误:企图写入const对象
因为常量在定义后就不能被修改,所以它必须被初始化。未初始化的常量定义将导致编译错误。
constdoublepi;//错误:未初始化的常量
const对象的地址只能赋值给指向const对象的指针。但是,指向const对象的指针可以被赋以一个非const对象的地址。
constdouble*pc=0;
constdoubleminWage=9.60;
pc=&minWage;//ok:不能通过pc修改minWage
doubledval=3.14;
pc=&dval;//ok:不能通过pc修改dval值,虽然dval本身不是一个常量
dval=3.14159;//ok
*pc=3.14159;//错误
在实际的程序中,指向const的指针常被用作函数的形式参数。它作为一个约定来保证:被传递给函数的实际对象在函数中不会被修改。
intstrcmp(constchar*str1,constchar*str2);