C++数组之静态数组

1.摘要

        数组是一种复合的类型,因此在定义数组时必须显式指定数组的类型,不能使用auto关键字,静态数组的声明形如a[d]; a是数组的名字,d是数组的维度。维度说明了数组中元素的个数,因此d必须大于0。

      在进行编译时,d必须是已知的,即编译器在编译时d已经是可以确定的值,因此数组的维度必须是一个常量表达式。

        所谓静态,只不过是为了区别于动态数组,并非声明时要加上static。

2.初始化

 int S = 10;
 
 int arr[S];          //错误,S不是常量表达式
 
 int *prr[10];        //正确,10是常量表达式
 
 
 const int M = 10;
 
 int A[M] = { 10 };   //正确,M是常量表达式
 
 string C = "fishing_pan";
 
 const int N = C.length();
 
 char B[N];          //错误,N不是常量表达式,因为N在运行时候才被初始化 

字符数组可以不声明大小。 

char arr4[3] ="pan";     //错误,"pan"是const char[4]类型,不能用于初始化char arr4[3]
 
char arr5[] ="pan";      //正确,arr5大小为4;

不能将数组内容拷贝给其他数组进行初始化,也不能用数组为其他数组赋值。

3.访问

1下标访问

char arr5[] = "pan";
 
char c=arr[2];          //c=’n’;

2.指针访问

int arr1[4] = { 0, 1, 2 };
 
int *p = &arr1[1];            //指向arr1的第二个数;

3.遍历

 int *beg = begin(arr1);     //指向数组首元素
 
 int *ends = end(arr1);      //指向数组末尾元素的下一位
 
  while(beg!=ends)          //进行遍历。
 
    {
 
        cout<< *beg<<endl;     //解引用输出数组值。
 
        beg++;
 
    }

4.多维动态数组

int twodArr2[4][5] = { { 0, 1, 2, 3, 4 }, {5, 6, 7, 8, 9 }, { 0, 1, 2, 3, 4 }, { 5, 6, 7, 8, 9 } };
for (auto p = begin(twodArr2); p !=end(twodArr2); p++)
 
       {
 
              for(auto q = begin(*p); q != end(*p); q++)
 
              {
 
                     cout<< *q << " ";
 
              }
 
              cout<< endl;
 
       }

多维动态数组中的指针:

两种方式:

int(*p3)[5]= twodArr2;        //指向twodArr2的第一行
 
p3= &twodArr2[1];              //指向twodArr2的第二行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值