java基础改学C++(五)数组(1)
#include <iostream>
using namespacestd;
int main(){
//1.1 声明一个数组
// 类型int 加名字a 加元素数:必须是一个固定值! 如果不写元素数,就必须在后面写内容 = {1,2,3,4};系统根据内容判断数组大小,此后就固定。
int b[3] ;
int c[] = {1,2,3,4};
int a[10] = {1,2,3,4};
//赋了部分初值的前提下,其余没赋值的都为0。static的数组默认值0
//数组在内存中顺序存放
//二维数组元素仍线性顺序存放,第一个元素内存中位置最低,维数为常量。
int d[3][4] = {{1,2},{3}};
int e[][4] = {{2,45},{42,5,2,3}};//与一维原理一样。
//这里一维可省大小,二维不可以,否则系统笨不知道选哪个做第二维的长度
//好了其余的和java差不多了,但是有一点,关于数组长度 java用length就解决了,这里是:
int len = sizeof(a)/sizeof(int); //内存中占位置大小。
其实数组大小有一个函数,下节说
//解释: a数组 在内存中的总大小 除以一个int类型的大小(都是byte为单位),就是长度了。有关函数后面再讲
//1.3 数组的其他知识
//C++中,数组名就是数组在内存中存放的首地址!!!!!!!是地址!!!! 通过这个性质,让指针=数组名,指针+1,就是下一个元素的指针。有的编译器提示方法参数的时候就是 int *q
//下面有demo,也就是说,方法里,实参与形参共占一段内存,形参的数组改变,实际数组也改变。(就是java的引用一样,这里是指针)
一个demo:第一张图:(后面有第二张,一起的)
第二张,最终结果
再来点demo
void sum(int array[],int lenth);
sum(a,len);
//用多维数组名作函数参数,则形参可以省略第一维,如果不省略第一维,则要与实参的数相同。不可省略第二维!,且第二维必须与实参中相应的数相等!
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;
// 长度我先写死了,长度方法下节再说