1️⃣.一维数组的声明:
一般声明:typeName arrayName[arraysize];
要创建数组,可使用声明语句。数组的声明应该指出数组的①存储在每个元素中的值的类型②数组名③数组中的元素数
比如:
short month[12] //create an array of 12 shorts
2️⃣.数组的初始化及使用:
只有在定义数组的时候才能初始化,之后就不能使用了,也不能将一个数组的值赋给另外一个数组,然而可以使用下标分别给数组中的元素赋值。
int array1[4] = {1,2,3,4}; //okay只有在定义数组的时候才能赋值
int array2[4]; //okay
array1[4] = {5,6,7,8}; //not allowed,这只能对数组的一个数赋值
array2 = array1; //not allowed
int array3[4] = {2,7}; //okay 只初始化前两个元素,默认其他元素为0
int array4[] = {1,9,9,5}; //okay 编译器计算元素个数
double array5[4] {1.1, 2.2, 5.5, 1.7e4}; //okay in c++11,可省略=
double array6[20] {}; //okay, 所有元素被设为0
double array6[20] = {}; //okay, 同上,所有元素被设为0
long array7[] = {3.1,6,7}; //not allowed 浮点数转成整形是缩窄操作
char array8[5] {'h','i','120','65535','\0'}; //not allowed 因为65535超出了char的范围
补充:(字符串)
字符串是存储在内存的连续字节中的一系列字符。之所以放在这里是因为存储在连续字节中的一系列字符意味着可以将字符存储在char数组中
1、C风格字符串(char数组)
char cat[9] = {'m', 'i', 'n', ' ', 'a', 'p', 'p', 'l', 'e'}; //not a string
char cats[10] = {'m', 'i', 'n',' ', 'a', 'p', 'p', 'l', 'e', '\0'}; //a string
这两个数组都是char数组,但是只有第二个数组是字符串,C-风格字符串具有一种特殊的性质,以空字符(null character)结尾,即\0,其ASCII码为0。用来标记字符串的结尾。
以上示例中,将数组初始化为字符串的工作特别冗长,还使用了大量的单引号。为了简化以上数组初始化为字符串,可以用以下方法,用引号括起的字符串隐式地包括结尾的空字符。
char cats[10] = "min apple"; // \0被默认添加
char fish[] = "Bubbles"; // 让编译器自动计数,自动计算大小开辟数组
单引号是字符,双引号为字符串
2、string类型
string str1 = "this is an example!"; //initial string
srting str2; //create an empty string object;
str2 = str1; //allowed, object assignment ok
string str3 = str1 + str2; //allowed ,add string
3️⃣.getline()与cin.getline()
cin在输入空格的时候会自动结束输入。相比之下,cin.getline的优点就是在输入字符串的时候可以输入空格。
#include<iostream>
cin.getline(char * s,n);
cin.getline(char * s,n,delim);
getline(cin,str);//将输入的cin,写入str中,遇到回车结束
s是一个字符数组,例如char name[100]
n是要读取的字符个数
delim是结束标志,默认为换行符\n
举例:
#include <iostream>
using namespace std;
int main () {
char name[256]
cout << "Please, enter your name: ";
cin.getline (name,256);
cout << name << endl;
return 0;
}
4️⃣.get()
作用与get()收到回车或空格或制表符就停止输入了
其调用形式为
cin.get()
cin.get(字符数组, 字符个数n, 终止字符)
或
cin.get(字符指针, 字符个数n, 终止字符)
举例:
#include <iostream>
using namespace std;
int main()
{
char ch[20];
cout << "enter a sentence:" << endl;
cin.get(ch, 10, '\n');//指定换行符为终止字符
cout << ch << endl;
system("pause");
return 0;
}
5️⃣string类
string的初始化
要加上头文件
#include<string>
#include<iostream>
#include<string>
using namespace std;
//string的初始化
int main()
{
string s1;
string s2 (3,'a');
string s3 ("value");
string s4 (s3);
cout << "s1:" << s1 << endl;
cout << "s2: " << s2 << endl;
cout << "s3: " << s3 << endl;
cout << "s4: " << s4 << endl;
return 0 ;
}
运行结果:
6️⃣string类的其他操作
strcpy(charr1,charr2); //把charr2的之付给charr1
strcat(charr1,charr2);//把charr2加到charr1上
str1.size();//计算str1的长度
strlen(charr1);//计算charr1的长度
7️⃣结构体
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
要把
using namespace std;
放在结构体定义之前
语法:
struct 结构体名 { 结构体成员列表 };
通过结构体创建变量的方式有三种:
1.struct 结构体名 变量名
2.struct 结构体名 变量名 = {成员1值,成员2值}
3.定义结构体时顺便创建变量
#include <iostream>
using namespace std;
#include <string>
//步骤一:定义结构体
struct Stu {
string name;
int age;
double score;
}s3;//步骤二:结尾可以直接定义结构体变量,也可以在后面定义
int main() {
//2、通过学生类型创建具体学生(三种方式)
struct Stu s1;//步骤二:创建结构体变量,struct可省略
//步骤三:给s1赋值,通过.访问结构体变量中的属性
s1.name = "张三";
s1.age = 25;
s1.score = 87.5;
cout << "姓名:" << s1.name << " 年龄:" << s1.age << " 分数:" << s1.score << endl;
cout << endl;
struct Stu s2 = { "李四",26,92.8 };
cout << "姓名:" << s2.name << " 年龄:" << s2.age << " 分数:" << s2.score << endl;
cout << endl;
s3.name = "王五";
s3.age = 24;
s3.score = 76.8;
cout << "姓名:" << s3.name << " 年龄:" << s3.age << " 分数:" << s3.score << endl;
}
8️⃣结构体数组
作用: 将自定义的结构体放入到数组中方便维护
语法:
struct 结构体名 数组名[元素个数]={
{},
{},
...
}
举例:
#include <iostream>
using namespace std;
#include <string>
//创建学生数据类型(姓名,年龄,分数)
struct Stu {
string name;
int age;
double score;
};
int main() {
//创建结构体数组
Stu arr[3] = {
{"张三",25,87.5},
{"李四",24,92.4},
{"王五",27,78.2}
};
//给结构体数组中的元素赋值
arr[2].name = "赵六";
arr[2].age = 35;
arr[2].score = 90.1;
//遍历结构体数组
for (int i = 0; i < 3; i++) {
cout << "姓名:" << arr[i].name << " 年龄:" << arr[i].age << " 分数:" << arr[i].score << endl;
}
}
9️⃣共用体/联合体
1️⃣0️⃣枚举
1.枚举类型的定义:枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
定义格式:枚举类型的定义格式为:enum <类型名> {<枚举常量表>};
例如:
enum spectrum{red,orange,yellow,green,blue,violet,indigo,ultraviolet};
spectrum被称为枚举类型。
可以用枚举名来声明这种类型的变量。
spectrum band;
band=blue;//valid
band=20000;//invalid
2.枚举只定义了赋值运算符,不能进行算术运算符。
band=orange;//valid
++band;//invalid
band=orange+red;//invalid
3.枚举量是整型,可被提升为int类型,但int类型不能自动转换为枚举类型。
int color=blue;//valid,spectrum type promoted to int
band=3;//invalid,int not converted to spectrum
color=3+red;//valid,red convert to int
4.设置枚举类型的值。
可以用赋值运算符设置枚举类型的值。
enum bits{one=1,two=2,four=4,eight=8};
指定的值必须是整数,也可以只显示定义其中一些枚举量。
enum bigstep{first,secong=100,third};
最后,可以创建多个值相同的枚举量。
enum {zero,null=0,one,numero_uno=1};
//zero 与null 值为0,而one与umero_uno=1值都为1。
5.枚举类型的取值范围。
每个枚举类都有取值范围,通过强制类型转换,可将取值范围中的任何整数值赋给枚举变量,即使这个值不是枚举值。
enum bits{one=1,two=2,four=4,eight=8};
bits myflag;
myflag=bits(6);//valid,because 6 is in bits range
//该枚举类型的范围为0~15
取值范围的定义:
找到枚举类型中的上限值的最小的二次幂减1.