前言
C++是一种静态类型的编程语言,它提供了丰富的数据类型来存储和操作数据。这些数据类型为C++程序员提供了丰富的选择,可以根据具体需求来选择最合适的类型来存储和操作数据。下面详细解释一些常见的C++数据类型,包括其原理和使用方法:
正文
01-数据类型简介
整数类型(int、short、long、long long):
a、这些类型用于表示整数,其范围和精度根据具体的类型而定。
b、原理:整数类型通常使用固定的位数来表示整数,可以是有符号或无符号的。
c、使用方法:int
通常是默认的整数类型,但你可以根据需求选择更适合的类型。
浮点数类型(float、double、long double):
a、用于表示带有小数部分的数值,精度和范围随类型而异。
b、原理:浮点数采用IEEE 754标准表示,分为单精度(float)、双精度(double)和扩展精度(long double)。
c、使用方法:double
通常是默认的浮点数类型,提供较高的精度,但会占用更多的内存。
数组(Array):
a、用于存储具有相同数据类型的元素的集合。
b、原理:数组在内存中是一块连续的存储区域,元素通过索引进行访问。
c、使用方法:声明数组时指定元素类型和大小,可以使用下标访问元素。
结构体(struct):
a、允许将不同类型的数据组合在一起,形成一个自定义的数据类型。
b、原理:结构体将多个数据字段打包成一个单独的对象。
c、使用方法:定义结构体并声明其成员变量,可以通过成员运算符.
访问成员变量。
类(class):
a、类似于结构体,但可以包含成员函数,从而实现面向对象编程。
b、原理:类将数据和操作数据的函数打包在一起,提供了封装、继承和多态等特性。
c、使用方法:定义类及其成员函数,可以通过对象来调用成员函数。
指针(Pointer):
a、存储内存地址的变量,用于间接访问内存中的数据。
b、原理:指针变量存储了一个内存地址,可以通过解引用操作符*
来访问该地址处的值。
c、使用方法:声明指针时需要指定指向的数据类型,可以使用new
来动态分配内存,使用delete
释放内存。
引用(Reference):
a、变量的别名,允许对同一内存位置的不同名称进行访问。
b、原理:引用实际上是一个已存在变量的别名,不占用额外的内存空间。
c、使用方法:在定义时使用&
符号声明引用,之后可以直接使用引用来操作原始变量。
02-整型
#include <iostream>表示:头文件,给予使用部分功能的权限 用于存储iostream类库的 源文件 ,在这个程序中用于提供输出这项功能。C++/C++11中头文件iostream定义了标准输入/输出流对象。包含了iostream也自动包含了ios、streambuf、istream、ostream和iosfwd。
using namespace std; 表示:namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
#include <iostream>
using namespace std;
void main() {
// 用void替换int,这样能少打一个return
//1、短整型 数据范围(-32768~32767)
short num1 = 10;
//2、整型
int num2 = 10;
//3、长整型
long num3 = 10;
//4、长长整型
long long num4 = 10;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
cout << "num3 = " << num3 << endl;
cout << "num4 = " << num4 << endl;
system("pause");
}
03-实型
实型(也叫浮点型)用于表示小数,因为程序中并不一定都是整数,还有小数。具体代码和解释如下:
#include<iostream>
using namespace std;
int main()
{
//1、单精度 float 有效数字范围为7位 有效数字统计时,也会统计小数点前面的数字
//2、双精度 double 有效数字范围为15~16位
//默认情况下,输出一个小数,会显示出6位有效数字
float f1 = 3.1415926f;//初始值后加字母f是因为不加字母时系统默认为双精度
cout << "f1 = " << f1 << endl;
double d1 = 3.1415926;
cout << "d1 = " << d1 << endl;
//统计float和double占用的内存空间
cout << "float 占用的内存空间为:" << sizeof(f1) << endl;
cout << "double 占用的内存空间为:" << sizeof(d1) << endl;
//也可以用科学计数法表示小数,不常用,主要用于明白别人写的代码是什么意思
float f2 = 3e2; //当e之后跟的是正整数时,它表示 3 * 10 ^ 2
cout << " f2 = " << f2 << endl;
float f3 = 3e-2;//当e之后跟的是负整数时,它表示 3 * 0.1 ^ 2
cout << "f3 = " << f3 << endl;
system("pause");
return 0;
}
04-字符型
字符型变量用于显示单个字符 :
1、在显示变量时,用单引号将字符括起来,不能用双引号
2、单引号只能有一个字符,不能是字符串
3、C和C++中字符型变量只占用1个字节
4、字符型变量并不是把字符本身存储到内存中,而是将对应的ASCII编码放入存储单元
#include <iostream>
using namespace std;
int main() {
// 掌握以下四点
// 1、字符型变量创建方式
char ch = 'b';
cout << ch << endl;
//2、字符型变量所占内存大小
cout << "char字符型变量所占内存:" << sizeof(char) << endl;
//3、字符型变量常见错误
//char ch2 = "b"; // 创建字符型变量必须用单引号
//char ch2 = 'abcde';//单引号中只能由一个字符
//4、字符型变量对应ASCII编码
// "(int)ch"命令可以将ASCII码强制转为10进制数,A-Z对应65-90,a-z对应97-122
cout << (int)ch << endl;
system("pause");
return 0;
}
05-字符串型
#include <iostream>
using namespace std;
#include <string>
int main()
{
//1、C风格的字符串
//注意:char 字符串名(即str)后要加[],等号后面要用双引号包含起来字符串。
char str[] = "hello world";//str代表字符串的变量
cout << str << endl;//这里指将字符串变量输出,注意str不可加双引号
//2、C++风格字符串
string str2 = "hello";
cout << str2 << endl;//但是现在不能输出,还需要加一个头文件#include<string>
system("pause");
return 0;
}
06-sizeof关键字
sizeof
是 C/C++ 中的一个运算符,用于获取数据类型或变量在内存中占用的字节数。它的作用和原理如下:
获取数据类型大小: 你可以使用 sizeof
来获取任意数据类型的大小,包括基本数据类型、结构体、类等。
获取变量大小: 除了数据类型外,你还可以用 sizeof
来获取变量在内存中所占的空间大小。
编译时计算: sizeof
是在编译时计算的,而不是在运行时。编译器在编译时就知道每种数据类型或变量所占用的内存空间大小。
以字节为单位: sizeof
返回的是以字节为单位的大小,一个字节通常由8位组成。
不同平台可能不同: 数据类型的大小在不同的编译器和不同的平台上可能会有所不同,但通常遵循一定的规则和标准。
对于数组的处理: 对于数组,sizeof
返回整个数组所占用的空间大小,而不是数组的指针大小。
对于指针的处理: 对于指针,sizeof
返回指针本身所占用的空间大小,而不是指针指向的对象所占用的空间大小。
不对表达式求值: 在使用 sizeof
时,不会对表达式进行求值,只是计算表达式所表示的类型或变量的大小。
#include<iostream>
using namespace std;
int main()
{
//整型:short(2指占的内存大小) int(4) long(4) long long(8)
//可以利用sizeof求出数据类型占用内存的大小
//语法:(就是书写方式)sizeof (数据类型 / 变量)
//例如:
short num1 = 10;
cout << "short占用的内存空间为:" << sizeof(num1) << endl;
//注:sizeof后写数据类型(short)或者变量(num1)都可以输出占用的内存空间
int num2 = 10;
cout << "int占用的内存空间为:" << sizeof(int) << endl;
long num3 = 10;
cout << "long占用的内存空间为:" << sizeof(num3) << endl;
long long num4 = 10;
cout << "long long占用的内存空间为:" << sizeof(long long) << endl;
system("pause");
return 0;
}
07-转义字符
使用方法和原理解释如下:
#include <iostream>
using namespace std;
int main() {
// 转义字符用于一些不能显示出来的ASCII字符
/* 主要用到以下三个字符
1、\n 用于换行
2、\t 用于水平制表
3、\\ 代表一个反斜线字符"\"
*/
// 1、\n 用于换行
cout << "hello world\n";
//2、\t 用于水平制表 作用就是可以整齐输出数据
cout << "aaa\thelloworld" << endl;
cout << "aaaaa\thelloworld" << endl;
cout << "aaaaaaa\thelloworld" << endl;
// 3、\\ 代表一个反斜线字符"\"
cout << "\\" << endl; // 必须是双引号
system("pause");
return 0;
}
08-转义字符
使用方法和原理解释以及运行结果如下:
#include<iostream>
using namespace std;
#include <string>
int main() {
// 数据输入
// 1、整型
// int a = 0;
// cout << "请给整型变量a赋值:" << endl;
// cin >> a;
// cout << "整型变量a = " << a << endl;
// 2、浮点型
// float f = 3.14f;
// cout << "请给浮点型f变量赋值:" << endl;
// cin >> f;
// cout << "浮点型变量f = " << f << endl;
// // 3、字符型
// char ch = 'a'; //字符用单引号表示
// cout << "请给字符型ch变量赋值:" << endl;
// cin >> ch;
// cout << "字符型变量ch = " << ch << endl;
// 3、字符串型
// string str = "abc"; // 字符串用双引号表示
// cout << "请给字符型str变量赋值:" << endl;
// cin >> str;
// cout << "字符型变量str = " << str << endl;
// 3、布尔类型
bool flag = true;
cout << "请给布尔类型flag变量赋值:" << endl;
cin >> flag;
cout << "布尔类型变量flag = " << flag << endl;
system("pause");
return 0;
}