Передача массива в функцию 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 +..]
Передача структуры в функцию (CИ)
Структуру надо определять вовне, иначе только майн (или та функция в которой) её поймёт
подробнее...
C++: И снова передача двумерных массив в функцию.. . каким макаром это сделать?
Объясняю: массив - это ряд одинаковых значений (нет, я не Очевидность 🙂 ). Имя массива в C/C++
подробнее...
ПОДСКАЖИТЕ как попасть в Рунет и что это такое?
Рунет — русскоязычная часть сети Интернет.
Возможна более узкая формулировка, гласящая,
подробнее...
Что такое вычислительный кластер Как назывался первый кластер В каком году он появился Где в России установлен самый
Один из первых архитекторов кластерной технологии Грегори Пфистер (Gregory F. Pfister) дал кластеру
подробнее...
Хочу научиться программировать. Подскажите, с чего начать???
В настоящее время в мире создано 8512 компьютерных языков разного уровня и направления.
На
подробнее...
у кого есть демо версии егэ по информатике 2008.
Демонстрационный вариант ЕГЭ 2008 г. ИНФОРМАТИКА, 11 класс.
© Федеральная служба по надзору в
подробнее...