1、元组个数
数组的定义格式为:
类型名 数组名 [常量表达式]
要注意一点,常量表达式里的值代表数组的个数,并不表示最大的下标值。
例如
int a[5];
代表只能访问里面的[0]-[4]
其中,常量表达式里只要是整数或者整数子集就可以、
例如:
int a['a'];
表示int a[97];
但是遇到这样的:
int n=100;
int a[n];
就会出现编译错误,因为在给n赋值的时候,改变了变量的性质。变量性质就是具有空间占用的可访问实体,编译每次碰到一个变量名就对应一个访问空间的操作。因此,int a[n]实际上在运行时才能读取到n的值。才能确定其大小。这与数组定义相违背。
改正方案:
const int n=100;
int a[n];
2、初始化
int a[5]={1,2,3,4,5,6};//错,初始值个数多了
int a[5]={1,,3,4,5};//错,必能以逗号的方式省略
int a[2]={};//错,不能为空。
int a[3]={1,2,3};//ok;
int a[]={1,2,3,4,5};//ok
char c[6]={"hello"}
char c[5]={'h','e','l','l','o'}
char c[6]="hello"
遍历数组时,可以用sizeof(a)/sizeof(a[0])表示数组中元素个数。
3、默认值问题:
#include<iostream>
using namespace std;
int a1[5]={1,2,3};
int a2[5];
int main ()
{
int a3[5]={2};
int a4[5];
cout<<"a1";
for(int i=0;i<5;++i)
cout<<a1[i]<<" ";
cout<<"\n a2";
for(int i=0;i<5;++i)
cout<<a2[i]<<" ";
cout<<"\n a3";
for(int i=0;i<5;++i)
cout<<a3[i]<<" ";
cout<<"\n a4";
for(int i=0;i<5;++i)
cout<<a4[i]<<" ";
cout<<"\n";
}
输出结果:
1 2 3 0 0
0 0 0 0 0
2 0 0 0 0
1245072 845597673 0 0 4298406
说明:函数外部的数组在整个程序中起作用,驻于全局数据区,初始值为0.函数内部则为乱码。
4、二维数组
定义:
int a[3][5];
初始化:
int a[3][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};
遍历问题:
int a[2][3]
for(i=0;i<2;++i)
for(j=0;j<3;++j)
cout<<a[i][j];
这篇博客介绍了C++中的数组基础知识,包括元组个数的理解,如何正确初始化数组,解释了数组默认值的问题,以及二维数组的定义和初始化方法。文中特别强调了在定义数组时,常量表达式的重要性,以及通过sizeof运算符获取数组元素个数的方法。同时,还探讨了函数内外部数组的区别及其默认初始值。
760





