C语言函数入参 const int* arr, const修饰的是谁,谁无法修改
时间: 2023-09-17 07:14:37 浏览: 56
在 C 语言中,使用 `const` 关键字修饰函数的参数时,表示该参数是一个指向常量的指针。在你提供的例子中,`const int* arr` 表示 `arr` 是一个指向整型常量的指针。这意味着函数内部无法通过 `arr` 修改指向的整型值。
具体来说,使用 `const int* arr` 声明的指针变量 `arr` 是可以修改的,可以指向不同的地址,但是通过 `arr` 解引用修改指向的值是不允许的。例如,下面的代码会导致编译错误:
```c
void foo(const int* arr) {
*arr = 10; // 错误,无法修改指向的值
}
int main() {
int num = 5;
foo(&num);
return 0;
}
```
上述代码中,`foo` 函数的参数 `arr` 被声明为指向整型常量的指针,因此在函数内部无法修改 `arr` 指向的值。
希望能解答你的问题!如果还有其他问题,请随时提问。
相关问题
去掉最高值,去掉最低值,求平均值 用c语言void Max(const int *arr,int len,int *max){} void Min(const int *arr,int len,int *min){} void Sum(const int *arr,int len,int *sum){} void Avg(int sum,int max,int min,int len,float *avg){} void test03(){ int arr[]={1,2,5,4,3,6,7}; int len =sizeof (arr)/sizeof (int); }
可以按照以下方式实现:
```c
#include <stdio.h>
void Max(const int *arr, int len, int *max)
{
*max = arr[0];
for(int i = 1; i < len; i++)
{
if(arr[i] > *max)
{
*max = arr[i];
}
}
}
void Min(const int *arr, int len, int *min)
{
*min = arr[0];
for(int i = 1; i < len; i++)
{
if(arr[i] < *min)
{
*min = arr[i];
}
}
}
void Sum(const int *arr, int len, int *sum)
{
*sum = 0;
for(int i = 0; i < len; i++)
{
*sum += arr[i];
}
}
void Avg(int sum, int max, int min, int len, float *avg)
{
*avg = (float)(sum - max - min) / (len - 2);
}
void test03()
{
int arr[] = {1, 2, 5, 4, 3, 6, 7};
int len = sizeof(arr) / sizeof(int);
int max, min, sum;
float avg;
Max(arr, len, &max);
Min(arr, len, &min);
Sum(arr, len, &sum);
Avg(sum, max, min, len, &avg);
printf("Max: %d\n", max);
printf("Min: %d\n", min);
printf("Sum: %d\n", sum);
printf("Avg: %.2f\n", avg);
}
int main()
{
test03();
return 0;
}
```
输出结果为:
```
Max: 7
Min: 2
Sum: 28
Avg: 3.50
```
去掉最高值,去掉最低值,求平均值 用void Max(const int *arr,int len,int *max){} void Min(const int *arr,int len,int *min){} void Sum(const int *arr,int len,int *sum){} void Avg(int sum,int max,int min,int len,float *avg){} void test03(){ int arr[]={1,2,5,4,3,6,7}; int len =sizeof (arr)/sizeof (int); }
可以使用以下代码实现:
```
#include <iostream>
using namespace std;
void Max(const int *arr, int len, int *max) {
*max = arr[0];
for (int i = 1; i < len; i++) {
if (arr[i] > *max) {
*max = arr[i];
}
}
}
void Min(const int *arr, int len, int *min) {
*min = arr[0];
for (int i = 1; i < len; i++) {
if (arr[i] < *min) {
*min = arr[i];
}
}
}
void Sum(const int *arr, int len, int *sum) {
*sum = 0;
for (int i = 0; i < len; i++) {
*sum += arr[i];
}
}
void Avg(int sum, int max, int min, int len, float *avg) {
*avg = (float)(sum - max - min) / (len - 2);
}
void test03() {
int arr[] = {1, 2, 5, 4, 3, 6, 7};
int len = sizeof(arr) / sizeof(int);
int max, min, sum;
float avg;
Max(arr, len, &max);
Min(arr, len, &min);
Sum(arr, len, &sum);
Avg(sum, max, min, len, &avg);
cout << "Max: " << max << endl;
cout << "Min: " << min << endl;
cout << "Sum: " << sum << endl;
cout << "Avg: " << avg << endl;
}
int main() {
test03();
return 0;
}
```
运行结果为:
```
Max: 7
Min: 2
Sum: 28
Avg: 3.5
```