Можно ли в си передать двойной массив из одной функции в другую ?
Если через указатель, то выдаёт: subscripted value is neither array nor pointer nor vector- "индексного значение не является ни массивом, ни указателя, ни вектор".
Подправил, убрал указатели вообще, сейчас этой ошибки нет, но как только доходит до того двумерного массива- сразу же вылетает за границы и программа перестает работать.
При этом передается сразу два char массива, один одномерный, второй двумерный. Одномерный нормально передается через указатель, а двумерный нет, и вообще какая-то хрень с двумерным. Препод сказал сделать это обязательно в отдельной функции, хотя сам показал пример только с одномерным.
двумерный?
используй указатель на указатель
Передавай как указатель на одномерный. Пример передачи в функцию для вывода на экран:
#include "stdio.h"
int func(int* a, int nStr, int nCol){
int i,j; for(i=0;i<nStr;i++){for(j=0;j<nCol;j++)printf("%2d",a[i*nCol+j]); printf("\n");}}
int main(){
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}}; func((int*)arr,3,3); getchar(); return 0;}
В C нет никаких "двойных массивов". Нет даже двумерных массивов. Есть массивы массивов и массивы указателей на массивы. Указатели на то и другое можно передавать в функции. Что именно и как именно ты используешь - мы сказать не можем, ведь кода ты не привел, а мы не телепаты.
не совсем в курсе, но мне так думается, что в функции просто надо объявлять тоже двумерный массив... если ничего умного больше не подскажут, то покопай в эту сторону