一 概念
什么是数组?
一组具有相同数据类型的元素的集合。
元素:组成数组的基本单位。
注意:
2 数组长度:元素的个数
3 同一个数组存同样的数据类型
二 定义
// 数据类型 变量名 ;
int num;
// 元素类型 数组名[数组长度] ;
int card[16];
注意:
1 数组长度必须是常量
2 数组长度在有些时候可以不写,但是[]一定要写
3 数组长度可以是宏定义或const(#define NUM 16)(const int num = 10;)
三 值
1 初始化
int card[10] = {};
1 {}里面 不写
全部元素 值默认为0
2 {}里面 写部分
没有初始值的元素 值默认为0
3 {}里面 写满
4 {}里面 写多了
小结:
1 {}里面 可以不写或写部分或写满 但是值的个数 不能超过数组长度
2 在初始化时 可以不写数组长度
(但是 [] 一定要写)
(一定要有{}里的初始值)
(初始值有几个数组长度就默认为几)
3 数组长度可以用 sizeof() 来求 求出来的是字节数(求元素个数:sizeof(数组名)/sizeof(元素类型))
2 赋值
1 涉及到访问数组元素,因为要访问到具体的元素才好赋值
2 访问到元素后,和普通赋值一样
四 访问
1 下标访问
· 数组下标从0开始 到数组长度-1
int card2[10]; // 定义了长度为10、元素类型为int的 一维数组card2
card2[0] = 1; // 给数组第0个元素 赋值为1
// 通过循环 遍历数组 将元素赋值
for (int i = 0; i < 10; i++)
{
card2[i] = i;
}
// 通过循环 遍历数组 打印数组元素的值
for (int i = 0; i < 10; i++)
{
cout << card2[i] << " ";
}
注意:
一定不要数组越界
越界:超过了界限
2 通过指针偏移
· 数组应用举例
/*
使用十六进制数,
右起第一位表示点数 3 -- A : 3 -- E 2 : 1
右起第二位表示花色 A B C D G : ♥ ♠ ♣ ◆ 王
*/
// 玩家二的牌
int card2[16] = {
0XA3, 0XA4, 0XA5, 0XA6, 0XA7,
0XA9, 0XB9, 0XC9,
0XDA, 0XAB, 0XCC, 0XBD, 0XBE,
0XB1,
0XB3, 0xC6};
//出牌
card2[7] = 0;
// 展示牌
for (int i = 0; i < sizeof(card2)/sizeof(int); i++)
{
// 花色
switch (card2[i]/16%16)
{
case 10:
cout << "红桃";
break;
case 11:
cout << "黑桃";
break;
case 12:
cout << "梅花";
break;
case 13:
cout << "方块";
break;
default:
break;
}
// 点数
switch (card2[i]%16)
{
case 11:
cout << "J" << endl;
break;
case 12:
cout << "Q" << endl;
break;
case 13:
cout << "K" << endl;
break;