Другие языки программирования и технологии

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int mas[3][3];

int i,l,j,a=3,b=3;

float arf;

printf("Vvedite mas\n");

for(i=1;i<=a;i++){

for(j=1;j<=b;j++)

{

mas[i][j]=i*j;

printf(" %i",mas[i][j]);

}

printf(" \n\n");

}

su(a,b,mas);

getch();

return 0;

}

su(int a,int b,int*mas )

{

int i,j;

for(i=1;i<=a;i++){

for(j=1;j<=b;j++)

{

if(mas[i][j]>5){

}

}

}

}

ошибка: 37 L:\43.c subscripted value is neither array nor pointer

хочу передать массив у функцию, п по идеи хочу посчитать количество нулей (не столь важно ) проблема в том что когда я в самой функцию делаю операцию над массивом выводит ошибку, что делать? как обойти ее ,,,потом если получается хочу в функции создать 2 переменные и сохранить данные где очень много и там где их мало ,,,вопрос как теперь передать этих 2 переменные в основную функцию ???спасибо
#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("\n Input array:\n");
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("\n");
output(ptr);
printf(" Count = %i\n", 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("\n");
}
printf("\n");
}
int zerocount(int* vector) {
int zc = 0, size = ROWS * COLS;
while (--size >= 0) if (!vector[size]) ++zc;
return zc;
}
Dmitri Dergarchev
Dmitri Dergarchev
97 138
Лучший ответ
Начни с того что в "С" и его потомках нумерация элементов массивов идет не с "1" а с"0"
так что сразу не
for(i=1;i<=a;i++){
а
for(i=0;i< a;i++){
Именно в "С" При передаче в функцию передаётся указатель на начальный элемент без всякого подразумевания о делении на столбцы и строки и слои и гиперкубы и прочее. там просто остаётся вытянутая в линию последовательнось на начало которой указано. и внутри функций ничто не знает о всяких mass[ i][ j][ k].так что передавай туда и размерность для определения чего-то типа
massfunc[ i+j*N +..]
Feda Verbitsky
Feda Verbitsky
27 060