(3)C++复合类型
阅读原文时间:2023年07月10日阅读:2

存储数据时必须跟踪的三个属性:信息储存在何处,存储的值,存储的类型

一、数组

#include
using namespace std;
int main()
{
//初始化赋值1
short a[];
a[] = ;
a[] = ;
a[] = ;

//始化赋值2  
short b\[\] = { ,, };

//始化赋值3,自己计算个数  
short c\[\] = { ,, };

//没赋值的位置会初始化为默认0  
short d\[\] = {  };

//始化赋值4,省略等号  
int e\[\] { ,, };

cout << e\[\] <<endl;  

}

二、字符串

1.连续字符组成德字符串

C语言风格,末尾要加 \0

char a[] = { 'd','f','e','\0' };

如果末尾不加 \0 则继续打印内存随后的各个字节,直到遇见 空字符为止

char a\[\] = { 'd','f','e','\\0' ,'n' };  
cout << a <<endl;//如果打印a 得到dfe  
cout << a\[\] << endl;//可以得到 n

2.字符串常量

char a\[\] = "abcde";  
cout << a <<endl;//abcde  
cout << sizeof(a) << endl;//数组的长度  6  
cout << strlen(a) << endl;//字符串的长度 5  
a\[\] = '\\0';  
cout << a << endl;//如果中间插入空字符,则程序只打印之前的字符

3.输入

(1)

int main()
{
char name[];
cin >> name; //cin使用空白(空格、制表符、换行)来确定字符串的结束为止,并自动在结尾添加空字符
cout << name << endl;//如果输入中加了空格,他只会打印之前的部分
}

而且cin不能防止输入多出20,超出后程序会引发异常

(2)getline()可以每次读一行

cin.getline(name,);//读取到指定为止,并且不受空白影响

三、string类

C++98标准添加了string类来扩展C++库

使用string 必须在头文件中包含

#include
#include //添加
using namespace std;
int main()
{
string str = "abc";
cout << str << endl;
}

四、结构

(1)

#include
#include
using namespace std;
int main()
{
struct Student
{
int age;
string name;
};
//初始化
Student stu = { ,"tom" };//等号可以省略
cout << stu.age << endl;
}

(2)结构数组

//初始化
Student stu[]{ {,"tom"},{,"mali"} };
//调用
cout << stu[].age << endl;

(3)结构中的位字段

指定占用特定位数的结构成员,使得创建与某个硬件设备上的寄存器对应的数据结构非常方便

加冒号

struct Card  
{  
    int shanqu : ;//占用4bit  
    bool b : ;//  
};

位字段通常用在低级编程中

(4)结构体指针

Student\* p = &stu;  
cout << p->age << endl;

五、共用体

VC++ 不能用此类型????实例化时报错

union Student1  
{  
    int age;  
    string name;  
};

六、枚举

enum Season  
{  
    Spring, Summer, Autumn, Winter  
};  
Season season;  
season = Spring;

可以赋值整数,默认为0

enum Season  
{  
    Spring=, Summer=, Autumn=, Winter=  
};  
Season season;  
season = Spring;  
cout << season << endl;

七、指针和自由存储空间  八、指针、数组和指针算术

篇幅长,合并转移到新章 https://www.cnblogs.com/buchizaodian/p/11516266.html

九、类型组合

十、数组的替代品

1.模板类Vector

2.模板类array