передача массива в функцию



Передача массива в функцию c

Автор Ckonsol задал вопрос в разделе Другие языки и технологии

Привет, помогите с программированием на СИ, передача массива в функцию.. и получил лучший ответ

Ответ от Николай Веселуха[гуру]
#include <stdio.h>
#define ROWS 3
#define COLS 3
int zerocount(int*);
void output(int*);
int main() {
int matrix[ROWS][COLS];
int* ptr = &matrix[0][0]; // через указатель, например.. .
int r, c;
printf("
Input array:
");
for (r = 0; r < ROWS; ++r) {
for (c = 0; c < COLS; ++c) {
printf(" matrix[%i][%i] -> ", r, c);
scanf_s("%i", &matrix[r][c]);
}
}
printf("
");
output(ptr);
printf(" Count = %i
", zerocount(ptr));
fflush(stdin);
getchar();
return(0);
}
void output(int* vector) {
int c, n, size = ROWS * COLS;
for (n = 0, c = 1; n < size; ++n, ++c) {
printf("%4i", vector[n]);
if (0 == c % COLS) printf("
");
}
printf("
");
}
int zerocount(int* vector) {
int zc = 0, size = ROWS * COLS;
while (--size >= 0) if (!vector[size]) ++zc;
return zc;
}

Ответ от Лиля Калиде[гуру]
Начни с того что в "С" и его потомках нумерация элементов массивов идет не с "1" а с"0"
так что сразу не
for(i=1;i<=a;i++){
а
for(i=0;i< a;i++){
Именно в "С" При передаче в функцию передаётся указатель на начальный элемент без всякого подразумевания о делении на столбцы и строки и слои и гиперкубы и прочее. там просто остаётся вытянутая в линию последовательнось на начало которой указано. и внутри функций ничто не знает о всяких mass[ i][ j][ k].так что передавай туда и размерность для определения чего-то типа
massfunc[ i+j*N +..]

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Привет, помогите с программированием на СИ, передача массива в функцию..
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*