数组和枚举、数组、二维数组、指针

1.枚举和数组可以结合:

enum StudentNames{
KENNY, // 0
KYLE, // 1
STAN, // 2
BUTTERS, // 3
CARTMAN, // 4
MAX_STUDENTS // 5};
int main(){
int testScores[MAX_STUDENTS]; // 或者这个句子可以这样写:static_cast(StudentNames::MAX_STUDENTS)
testScores[STAN] = 76;
return 0;}

可以使用枚举类型中的**名称来表示序号索引。
注:不能将MAX_STUDENTS直接写成StudentNames::MAX_STUDENTS,因为如果这样表述,StudentNames必须要是一个命名空间才可以。可以对枚举类型做如下的改变:
namespace StudentNames{
enum StudentNames{
KENNY, // 0
KYLE, // 1
STAN, // 2
BUTTERS, // 3
CARTMAN, // 4
MAX_STUDENTS // 5};
int m
}

这样就可以了。

2.数组:

在用数组作为函数传参的时候,如果不希望数组被修改,可以使用关键字const,如下:
void passArray(const int prime[5]){}

算数组大小时(有几个元素):sizeof(array) / sizeof(array[0])
数组物理内存大小:sizeof(array)

3.二维数组

初始化二维数组:最简单的方法就是,把每一行都加一个大括号框起来,如下:
int array[3][5] ={
{ 1, 2, 3, 4, 5 }, // row 0
{ 6, 7, 8, 9, 10 }, // row 1
{ 11, 12, 13, 14, 15 } // row 2
};

另一个初始化方式:行(第一个数)可以省略。

4.一些关于指针的问题:

指针的释放:把指针delete之后,要将指针置空,比如:
delete p;
p=null;

指针的大小:sizeof(chPtr)
其实无论是什么类型的指针,指针大小都是相同的,指针只不过是存储一个物理地址。跟所指向的类型无关。

指针的初始化:指针如果不被初始化的话,默认情况下会指向一个垃圾地址,而且编译器也会报错。

空指针:空指针是指针变量指向的地址是0,而不是指向的内容是0,不也是指没有初始化的指针。空指针的定义如下:int *p;p=0;
空指针还可以代表布尔值,空指针会表示false,非空指针会表示true。

指针和数组有很多相似的地方。比如,对于数组a,指向它的指针p=a,和&a[0],如果设置二者输出,这二者是一样的。数组的首地址,就是数组第一个元素的地址。
但是二者之间也是有差异的。在使用sizeof函数的时候,sizeof(a)表示的是整个数组的大小,即:元素个数*每个元素的大小;而sizeof§表示的只是指向的物理地址的大小,这个大小相当于一个元素的样子。

指针的算术:对于:int *p;来说,p被赋予地址,因此p+1,p+2也必然是地址,只不过这个地址并不是单纯的地址上的加一加二,而是表示的是int 的大小乘以1或者2。p+1的大小和指针p所指向的类型有关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值