若一批数据有内在联系,同时具有相同属性,则可将这批数据看作一个整体 -- 数组
数组即为有序数据的集合
以下写法是合法的:
int a[2*5]
int a[n*2]
可以只给一部分元素赋值
int a[10] = {0,1,2,3,4};
表示只给前5个元素赋初值,后5个元素值默认为0
C++中,二维数组的元素排列顺序采用按行存放的方式,即先存放第1行,再存放第2行的元素
二维数组也可以只对一部分元素赋初值
int a[3][4] = {{1}, {0,6}, {0,0,11}};
由于二维数组采用按行优先赋值的方式,因此里面每一个括号代表每一行的值
1 0 0 0
0 6 0 0
0 0 11 0
#include <iostream>
using namespace std;
int a[2][3], b[3][2];
int main()
{
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 3; j++)
{
cin >> a[i][j];
}
}
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 3; j++)
{
/* b[0][0] = a[0][0];
b[1][0] = a[0][1];
...
b[0][1] = a[1][0]
b[1][1] = a[1][1];
...
*/
b[j][i] = a[i][j];
}
}
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 2; j++)
{
cout << b[i][j] << " ";
}
cout << endl;
}
return 0;
}
#include <iostream>
using namespace std;
int a[3][4];
int main()
{
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 4; j++)
{
cin >> a[i][j];
}
}
int max = a[0][0], max_raw = 0, max_col = 0;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 4; j++)
{
if(a[i][j] > max)
{
max = a[i][j];
max_raw = i;
max_col = j;
}
}
}
cout << max << " " << max_raw << " " << max_col << endl;
return 0;
}
①实参数组与形参数组类型必须一致。若不一致,结果将出错
②数组名代表数组首元素的地址,不代表数组中的全部元素;数组名作函数实参时,不是将实参数组中各元素的值传递给形参,而是将实参数组的首地址传递给形参
③实际上把形参数组名作为一个指针变量来处理,用于接收从实参传过来的地址
char str[] = {"I am happy"}; char str[] = "I am happy";
对于上述字符串,系统会在末尾补一个字符串结束标志'\0'
且上述字符串和如下形式等价:
char str[] = {'I',' ','a','m',' ','h','a','p','p','y','\0'}; // 长度为11
但不与如下形式(字符数组)等价:
char str[] = {'I',' ','a','m',' ','h','a','p','p','y'}; // 长度为10
综上:字符串的最后一个字符,必须为'\0'
而字符数组的最后一个字符,不是必须为'\0',甚至可以不包含'\0'(可有可无)
如以下写法是完全合法的:
char str[5] = {'C','h','i','n','a'}; // 输出的字符不包括'\0'
cout << str; // 输出字符串
cout << str[4]; // 输出字符串中的一个字符
字符数组,必须借助for循环输出字符!