Проиндексированы ли нулевые массивы, когда они передаются через функцию в качестве аргумента? Или C просто скопировал память массива A в два разных массива?
Мне никогда не нужно «сбрасывать» исходную позицию массива, когда я передаю тот же массив через другую функцию?
static const int A[3] = {1, 5, 8};
void fun(const int B[]){
printf("val = %d\n", *B);
B++;
printf("val = %d\n", *B);
}
int main() {
fun(A);
fun(A);
return 0;
}
Вывод:
val = 1
val = 5
val = 1
val = 5
Например, когда я не использую const
, я вижу, что они используют одну и ту же память, но это только тогда, когда я не использую const
.
static int A[3] = {1, 5, 8};
void fun(int B[]){
printf("val = %d\n", *B);
*B = 10;
printf("val = %d\n", *B);
}
int main() {
fun(A);
fun(A);
return 0;
}
Вывод:
val = 1
val = 10
val = 10
val = 10