C++复合类型
#include<iostream>#include<cstring>
#include<string>
#include<vector>
#include<array>
using namespace std;
/*
学习进度C++ primer plus第4章
*/
/*
复合类型
-数组
-C风格字符串
-string变量
-getline()和get()
-结构体
-共用体
-枚举
-指针
-new与delete管理动态内存
-创建动态数组
-创建动态结构
-自动储存,静态存储和动态存储
-vector与array类
*/
int main(void) {
//基本一维数组,与c语言使用相同
int numberArray;
numberArray = 1;
numberArray = 2;
numberArray = 3;
cout << numberArray << "\n" << numberArray << "\n" << numberArray << endl;
int numberArray_2 = { 1,2,3 };
cout << numberArray_2 << "\n" << numberArray_2 << "\n" << numberArray_2 << endl;
//字符串
char string_1 = { '1','2','3','4','\0' };
char string_2[] = "gaowanlu";
cout << string_1 << '\n' << string_2 << endl;
//#include<cstring>里面有C语言的string.h里的函数,例如strlen()
cout << strlen(string_2) << endl;
//cin.getline(),输入回车结束输入,即输入一行
char string_3;
cout << "输入一个字符串" << endl;
cin.getline(string_3, 20);
cin.get();
//如果超过了20个,后面的会存在于输入队列之中
cout << string_3 << endl;
//get(),常用于解决输入完毕时进入输入流的回车键,否则回车将会存在于,输入队列之中
if (1) {
int number;
cout << "请输入一个数字" << endl;
cin >> number;
cin.get();
cout << number << endl;
}
//string类变量
//要在头文件中引入#include<string>
//string类需要空间命名std::string
if (1) {
string myName;
cout << "请输入一个字符串" << endl;
cin >> myName;
cin.get();
cout << myName << endl;
myName = "gaowanlu\n";
cout << myName;
string string_1="gao";
string string_2="wanlu";
string string_3 = string_1 + string_2;
cout << string_3 << endl;
//string类的size()方法,返回字符串的长度
cout << "length of string_3->" << string_3.size() << endl;
}
//结构体
if (1) {
struct myStruct {
int id;
string password;
};
//c plus plus允许声明变量时省略前面的struct词,保留也是正确的
myStruct user;
//结构体变量可以直接这样进行赋值
user = { 123,"gaowanlu" };
cout << "输入用户名称\n";
cin >> user.id;
cin.get();
cout << "输入用户密码\n";
cin >> user.password;
cin.get();
cout << user.id << "\n" << user.password << endl;
//结构体的嵌套
struct bigStruct {
myStruct smallStruct;
int number;
};
bigStruct sayHell = { {123,"as"},121 };
cout << sayHell.smallStruct.id << sayHell.smallStruct.password << sayHell.number << endl;
//结构体数组知识省略与c语言相同
//共用体
union createUnion {
int numebr;
string string;
};
//共用体只能存放一个成员因为只有一个地址内存
}
//枚举类型
if (1) {
enum enum_1{a,b,c,d,e,f};
//a b c d e f
//0 1 2 3 4 5
enum enum_1 myEnum;
myEnum = a;
cout << myEnum << endl;
//可以指定枚举内值
enum enum_2{a=2,b=4};
}
//指针类型
if (1) {
//简单的指针概念以及相关操作省略与c语言相同
}
//new 与delete
if (1) {
//使用new 来申请内存空间
int* intp = new int;
*intp = 123;
//当然可以用结构体指针,来new一个结构体大小的内内存空间来
//使用delete来释放为指针使用new 来分配的内存空间
//不能使用delete来释放声明变量所获得的内存
//使用new 来创建动态数组
int* psome = new int;
//即为C语言中的 int *psome=(int*)malloc(sizeof(int)*10);
//释放动态数组空间
delete[]psome;
}
//数组的替代品vector与array
//#include<vector>
//#include<array>
if (1) {
//模板类vector
//vector
vector<int>vi;
vector<double>vd(12);
//模板类array
array<int, 5>ai;
array<double, 4>ad;
}
return 0;
}
文档来源:51CTO技术博客https://blog.51cto.com/u_15302296/3072266
页:
[1]