java基础改学C++(五)数组(1)


#include <iostream>

using namespacestd;


int main(){


//1.1 声明一个数组  

// 类型int 名字加元素数:必须是一个固定值! 如果不写元素数,就必须在后面写内容 = {1,2,3,4};系统根据内容判断数组大小,此后就固定。

    int b[3] ;

    int c[] = {1,2,3,4};

    

    int a[10] = {1,2,3,4};

    //赋了部分初值的前提下,其余没赋值的都为0static的数组默认值0

    java基础改学C++(五)数组(1)

    

//数组在内存中顺序存放

//二维数组元素仍线性顺序存放,第一个元素内存中位置最低,维数为常量。

    int d[3][4] = {{1,2},{3}};

    

    int e[][4] = {{2,45},{42,5,2,3}};//与一维原理一样。

//这里一维可省大小,二维不可以,否则系统笨不知道选哪个做第二维的长度

    

//好了其余的和java差不多了,但是有一点,关于数组长度 javalength就解决了,这里是:

    

    int len = sizeof(a)/sizeof(int); //内存中占位置大小。

其实数组大小有一个函数,下节说

    //解释: a数组 在内存中的总大小 除以一个int类型的大小(都是byte为单位),就是长度了。有关函数后面再讲

    

//1.3 数组的其他知识


//C++中,数组名就是数组在内存中存放的首地址!!!!!!!是地址!!!! 通过这个性质,让指针=数组名,指针+1,就是下一个元素的指针。有的编译器提示方法参数的时候就是 int *q    


//下面有demo,也就是说,方法里,实参与形参共占一段内存,形参的数组改变,实际数组也改变。(就是java的引用一样,这里是指针)

一个demo:第一张图:(后面有第二张,一起的)

java基础改学C++(五)数组(1)


第二张,最终结果

java基础改学C++(五)数组(1)




再来点demo

    void sum(int array[],int lenth);

    sum(a,len);


//用多维数组名作函数参数,则形参可以省略第一维,如果不省略第一维,则要与实参的数相同。不可省略第二维!,且第二维必须与实参中相应的数相等!

java基础改学C++(五)数组(1)

    int maxValue(int arr[][4]);  

    int max =maxValue(e);

    cout<<max<<endl;

    

}

//sum函数

void sum(int arr[],int len){

    

    int sum =0;

  

    for(int i=0;i<len;i++){

        sum+=arr[i];

    }

    cout<<sum;

    cout<<endl;

}


//max

int maxValue(int arr[][4]){

    int max = arr[0][0],i=0,j=0;

//   长度我先写死了,长度方法下节再说