1. 数组
- 数组是把同一类型的数存储在同一变量名之下。
type name[x];
其中,type是指存储的数据类型,name是指变量名称,x指数组中变量个数。 - 表示数组内元素
name[i]表示数组内的第i+1个元素,因为元素下标从0开始表示。 - 给数组赋值方法
- 用循环语句给数组内元素赋值
- int name[3]={1,2,3};
- int name[]={1,2,3}; //只能在声明变量时使用,编译器会根据花括号内的值的个数自动的创建出一个长度与之匹配的数组
2. 指针
- 地址
创建变量时,系统会分配一些内存块来保存他们的值,每个内存块都有一个独一无二的地址,变量的地址可以用&variablename语法,可以把变量的地址赋值给一种成为指针的特殊的变量。 - 指针
指针的定义
type *pointerName; //指针的类型必须与它保存其地址的变量的类型一致;
int myInt=904;
int *myPointer;
myPointer=&myInt;
利用指针改变值
对指针做解引用 *aPointer
这里的指针加星号不是为了定义指针,是为了引用指针所指地址存储的变量值。C+允许多个指针有同样的值,如:
int *p1=&myInt;int *p2=&myInt;
这里p1=p2.指针与数组
计算机把数组保存在一组连续的内存块里,数组的名字同时也是一个指向其地址(第一个元素的地址)的指针。
int *ptr1 = &myArray[0];int *ptr2 = myArray;
上面两个语句能干同样的事情。要把指针的值改变成第二个数组元素的地址,可以通过ptr++ 的方式对指针做递增运算。
数组的指针类型必须与数组中元素类型一致。
3. 结构
- 结构是一种由程序员定义的,由其他变量类型组合而成的数据类型
struct structurename
{
type varName;
type varName;
//and so on.
}; - 指向结构的指针
struct structname
{
unsigned short age;
char gender;
};
person me={40,'m'};
person *myself=&me;
(*myself).age=41;
myself->gender;
- 结构是包含多个子变量的变量定义,类是一种包含子变量和函数(也叫做方法)的变量定义。
- 还可以创建以结构位元素的数组
person family[5];
family[3].age=4;
family[2].gender='F';
- 联合
联合也可以容纳不同类型的值,但它每次只能存储这些值中的某一个。
4. 再论用户定义函数
- 变量只能以值传递的形式传递给函数,而不是变量本身。
若希望在不使用某个变量的名字的情况下改变这个变量的值,要通过地址和指针。
示例:
int main()
{
int myNum=20;
changeVar(&myVar,90);
}
void changeVar(int *myvar,int newValue)
{
*myVar=newValue; //myVar的值被改变
}
- 以“引用传递”方式向函数传递参数
void changeVar(int &myVar, int newValue)
调用函数时只需要传递变量名。 - 类型别名
可以使用typedef int * intPointer 定义类型别名
定义后intPointer就代表整数指针类型。 - 枚举enum(enumeration)
enum enumName{possible value};
举例:
enum weekdays{monday tuesday wednsday thursday friday}; //定义枚举类型
weekdays today; //创建该类型的变量
today=tuesday; //为变量赋值