一,数组
1,数组只有在定义时候才能使用初始化,不能将一个数组赋给另一个数组。
int a[4]={1,2,3,4};//正确
int a[4];
a[4]={1,2,3,4};//不正确
int b[4]=a;//不正确
2,初始化数组时候,提供少于数组元素数目的部分数值,则将剩余赋值为0;
float a[5]={1,2};
3,如果初始化数组时候,方括号内[ ]为空。C++编译器将计算元素个数。
short a[ ]={1,2,3,4,5};
int number=sizeof(a)/sizeof(short);//计算元素个数(可见字符个数)
char a[ ]={'a','b','c','d','e'};//必须是char 类型的 字符串
strlen(a);//计算可见字符串个数
二,字符串
1,字符串结尾字符为'\0'(ASCII码为0)
char a[5]={'a','b','c','d','e'};// 纯字符数组,最好不要当做字符串处理
char a[5]={'a','b','c','d','\0'};//结尾为空字符,可以当做字符串处理
char a[15]="I am a student";//系统自动在最后一个字符加上'\0';
char a[]="I am a student";//系统自动算字符个数
【remember】确定字符串所需最短数组时候,不要忘记结尾空字符串。
"s" 表示两个字符 's'和'\0';
2,字符串输入:面向行输入getline()
char a[20]; //必须为char类型的 字符数组 如果输入的字符多于19个(1个'\0'),geline仅仅取前19个字符。而多于的不会留在输入队列中(区别与get()) 3,字符串输入:面向行输入get() char a[2]; 输入:abcd 输出:1 1 如果是getline()则输出:1 0 get()取的是n-1个可见字符,数组声明为 n 则读取n-1字符,最后一个设置为'\0';遇到换行符则将其留在输入队列。 第二次调用cin.get()读取第一个字符为 换行符。 【难点】两个cin 为何只允许输入一次?? char a[5]; char b[5]; cout<
三,string类型 1,连接两个字符串 string str1,str2,str3; str3=str1+str2; strcpy(str3,str1);//将str1复制到str3中 strcat(str3,str2);//将str2添加到str1中 2,未被初始化的字符数组,第一个空字符出现的位置是随机的。 char a[10]; 输出 4 //0-9 随机 四,结构类型 1,struct 用法 struct node { int data; node *next; }p1;//声明结构类型的变量 2,共用体 union 一种数据结构格式存储不同结构类型,但是每次只能使用一个类型。 struct node { int data; union id { long id_num; int id_num; } node *next; }p1;// /*一点了,该睡觉了……未完待续*/ -------------------------------------------------------------------------------------------------------------- /*元旦三天假期,偷懒了一下。继续奋战*/ 3,枚举 enum 用法:enum 枚举名{所包含的元素}; 默认枚举值: enum name{red,orange,yellow,green,blue}//默认,red=0;orange=1;yellow=2…… 设置枚举值:enum name{one=1,two=2,four=4,a,b};//默认指定值 four之后,a=four+1=5;b=6 声明变量:name band; band=red;//valid 在不进行强制转换情况下,只能将定义枚举时使用的枚举量赋给这种枚举的变量 band++; //invalid 没有为枚举定义算术运算
cin.getline(a,20);//将用户输入的字符 读入到一个包含20个元素的 a数组中。
cout<
char b[2];
cin.get(a,2);
cin.get(b,2);
cout<
cin.get(a,5);
cin.get(); //读取输入队列中换行符并丢弃。防止下次读换行符时认为结束而终止。造成第二次不能输入
cout<
cin.get(b,5);
cout<