typeName arrayName[arraySize];
short months[12];
//初始化
int array[3]={1,2,3};
关键的一点:arraySize绝对不能是变量,可以是常量,也可以是常量表达式(8*sizeof(int))。(注意:const声明的是常量)
常识:C++的数组越界不会报错,会给出异常的值
int cards[3]={1,2,3};
int hand[3];
hand = cards; //这是绝对禁止的
int totals[500]={0}; //其它值默认都是0 了
int cards[3]={1,2,3};
int len = sizeof cards/sizeof(int);
int cards[3] {1,2,3};
int counts[3] = {};
如
long plifs[]={25,2,3.0};// 不允许,因为浮点数3.0转换为long是缩窄操作,非法
C++有两种处理字符串的方式
结尾用空字符’\0’结尾的char数组,'\0’的ASCII码为0
char cat[5]={'a','b','c','\0'}; //这就是一个string
cout<<cat; //只输出"abc"
这种表示太麻烦了,简单写法如下,下面的叫字符串常量。
char bird[11]="Mr. Cheeps"; // \0不用明确写出来
在确定存储字符串所需要的最短数组空间时,别忘了将结尾的空字符计算在内。
注意:字符串常量不能和char相互转换。
char b[]="asd";
char a = "S"; //非法!!! ,且C++中“S”表示的是该字符串存储的地址,也就是指针
a=b; //不能转换
cin每次值读取一个单词!!
cin>>name;
cout<<"等待";
cin>>age;
cout<<
//如果用户直接输入一行:zhou is 18 age
//,那name会读取zhou,age会读取is,然后执行后面的代码
cin使用空白(空格、制表符、换行符)来确定字符串的结束位置。
char name[30]={0};
cin.getLine(name,20); //读取19个字符到name中,剩余一个空间存'\0'
getLine()与get()有很多区别,具体见P80页。 待看
#include
C++11允许:
char a[]={"sadas dsa"};
string b[]={"rwq"};
//C风格的拼接char [] 头文件cstring
strcat(char1,char2)
strcpy(char1,char2)
键盘输入string!!!
string str;
char a[20];
getLine(str); //读取string的不是类方法!!!
cin.getLine(a); //是类方法
c++允许在声明结构体变量时候省略struct
struct student{
string name;
int age
}
struct student a; //都行
student a;
student a = {“zhou”,12};
C++11结构体初始化
student a{"zhou",12} ; //允许省略'='
student a{}; //所有值默认为0
//同样不允许缩窄转化
同时完成结构体定义结构和创建结构变量的工作
struct student{
string name;
int age
} a, b; //同时创建学生a和学生b
结构体中的位字段
c++允许指定占用特点位数的结构成员,每个成员都被称为位字段
struct student{
unsigned int age : 4 ; //4bit for age value
bool goodint :1;
}
具体的百度吧
union one{
int a;
double b;
char c;
}
one x;
x.a =4; //此时x是int变量
x.b=2.3; //此时x是double变量
x是什么变量根据其当时存储的数据类型决定,有时候是int,有时候是char.
注意,共用体的长度等于最大成员的长度,上述例子是double的长度
enum bits{first,second=100,third}; //默认first=0,third比前面的大1,为101
enum bits{first,second=0,third}; //first=0 third=1;
如果name是一个变量,则&name代表它的地址
int name;
cout<<&name<<endl;
指针的基本使用
int a;
int *p;
p=&a;
cout<<*p; //输出a的值
cout<<p; // 输出a的地址
创建了一个指针p,分配了指针的空间,但是没有分配指针之后要存储的地址的空间啊!!!
long *p;
*p=123; // 123存在哪里了未知,非常危险!!!