Я имел в виду книгу «Программирование на языке программирования только для часто задаваемых вопросов» Пола С R Chisholm. По словам автора: «Поскольку массив передается по значению, то создается точная копия массива и помещается в стек. Затем вызываемая функция получает эту копию массива и может ее распечатать. Поскольку массив передан byval_func() является копией исходного массива, изменение массива в функции byval_func() не влияет на исходный массив »Передача массива функции по значению
Но я думал, что если мы передадим массив, как указано в его примере, это изменит массив даже в вызывающей части. Я даже пытался, и это было в соответствии с моим ожиданием. Пожалуйста, поправьте меня, если я ошибаюсь.
Ниже приведен пример, приведенный в учебнике.
void byval_func(int[]);
void main(void)
{
int x[10];
int y;
/* Set up the integer array. */
for (y=0; y<10; y++)
x[y] = y;
/* Call byval_func(), passing the x array by value. */
byval_func(x);
}
/* The byval_function receives an integer array by value. */
void byval_func(int i[])
{
int y;
/* Print the contents of the integer array. */
for (y=0; y<10; y++)
printf(“%d\n”, i[y]);
}
должен быть могущественной старой книгой, потому что в современном C, main() ALWAYS имеет тип возврата 'int'. – user3629249
в C, имя массива ухудшается до адреса первого байта массива. поэтому передается указатель на массив, а не содержимое массива – user3629249
этот параметр функции: '(int i [])' определяет «указатель на целочисленный массив», а не содержимое массива – user3629249