C использует язык pass by value
.
Итак, вы должны получить адрес массива в качестве аргумента.
void change(int *, int);
int main(void) {
int array[3] = { 1, 2, 3 };
printf("%d", array[1]);
change(array, 1);
printf("%d", array[1]);
}
void change(int *array, int index) {
*(array+index) = 4;
}
Для многомерного измерения Вы должны передать размер столбца.
Я сделал 2 образца как change
и change2
.
Я думаю, что вы можете понять change
хорошо.
Но, в случае change2
, array
имеет головной адрес памяти в array[2][3]
и имеет 6
целых чисел 2x3
. Итак, вы можете рассчитать.
void change(int array[2][3], int, int, int);
void change2(int *, int, int, int, int);
int main(void) {
int array[2][3] = { { 1, 2, 3 }, {4, 5, 6} };
printf("%d", array[1][1]);
change(array, 1, 1, 10);
printf("%d", array[1][1]);
change2((int *)array, 3, 1, 1, 20);
printf("%d", array[1][1]);
}
void change(int array[2][3], int row, int col, int value) {
array[row][col] = value;
}
void change2(int *array, int size_col, int row, int col, int value) {
*(array + row*size_col + col) = value;
}