【发布时间】:2020-02-25 08:42:00
【问题描述】:
在我正在研究的书中说,如果我将向量传递给函数,则向量的名称始终被视为指针。 事实上就是这样。 但是我不明白为什么在第一个函数中编译器允许使用 const 子句,而在第二个函数中(我使用指针来搜索元素之间的最大值)没有。 在函数中,我只是想防止修改向量。
#include <stdio.h>
int find_largest(const int a[], int n);
int find_largest_with_pointer(const int *vettore, int n);
int main(void) {
int my_number[] = {5, 7, 90, 34, 12};
int n = sizeof(my_number) / sizeof(my_number[0]);
int *pmy_number = my_number;
printf("%d\n", find_largest(my_number, n));
printf("%d\n", find_largest(pmy_number, n));
printf("%d\n", find_largest_with_pointer(my_number, n));
printf("%d\n", find_largest_with_pointer(pmy_number, n));
return 0;
}
int find_largest(const int a[], int n) {
int i, max;
max = a[0];
for(i = 0; i < n; i++)
if(a[i] > max)
max = a[i];
return max;
}
int find_largest_with_pointer(const int *vettore, int n) {
int *i, max = *vettore;
for(i = vettore; i < vettore + n; i++)
if(*i > max)
max = *i;
return max;
}
【问题讨论】:
-
编译器错误应该很清楚地告诉你你做错了什么以及为什么。
标签: c arrays pointers parameter-passing cc