这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战
int main()
{
int aList[5] = { 2,3,5,7,9 };
cout << aList << endl;
system("pause>0");
return 0;
}
在 c++ 声明一个数组变量,我们应该在声明时给出数组长度,以及给出数组元素类型。这样系统会根据用户请求来分配内存,这样好处就是省掉编译器很多工作,越多确定工作,在开始之前就确定下来,好处是后面会省很多事,所以速度也快。
然后我们输出一下 aList 和 &aList[0] 看这两个输出结果都是一个地址,而且地址值相同,其实这一点对于从前端也好还是用 Java 后端的开发人员都有点 confusing。首先 aList 是一个变量,也是一个指针,指向存储数组第一个元素的地址。
cout << aList << endl;
cout << &aList[0] << endl;
cout << aList[2] << endl;
cout << *(aList + 2) << endl;
那么我们如何通过 aList 来访问数组,其实可以通过[index]这种我们熟悉方式来访问数组。也可以通过指针方式来访问数组的元素,例如 aList + 2
for (int i = 0; i <=4; i++)
{
cout << *(aList + i) << endl;
}
for (int i = 0; i <=5; i++)
{
cout << *(aList + i) << " ";
}
如果输出范围大于数组索引范围,如果访问到一个地址超出数组的地址范围,则会返回如下
2 3 5 7 9 -858993460
int get_sum(int arr[]) {
int sum = 0;
int size = sizeof(arr)/sizeof(arr[0]);
for (int i = 0; i <= size; i++)
{
sum += arr[i];
}
return sum;
}
int arr[] = {1,2,3,5,7};
int sum = get_sum(arr);
cout << "sum of arr = " << sum << endl;
大家在运行代码之前可以猜一猜 sum 的值,如果上面内容了解这个应该不难猜到,这个代码是对你对上面内容的检测。
接下里我们去通过两个getMin和getMinAndMax这两个方法去实现一下来巩固一下我们数组。
int getMin(int numbers[], int size) {
int min = numbers[0];
for (int i = 1; i < size; i++)
{
if (numbers[i] < min)
min = numbers[i];
}
return min;
}
cout << "Min is " << getMin(aList, 5) << endl;
void getMinAndMax(int numbers[], int size, int* min, int* max) {
for (int i = 1; i < size; i++)
{
if (numbers[i] > *max) {
*max = numbers[i];
}
if (numbers[i] < *min) {
*min = numbers[i];
}
}
}
int min = aList[0];
int max = aList[0];
getMinAndMax(aList, 5, &min, &max);
cout << "Min is " << min << " and Max is " << max << endl;