С/С++ проблема с передачей параметров-структур функции

программирование C++

Вот несколько фрагментов программы:
struct mat { int A[N][N];};
struct vec { int x[N];};

struct vec func1(struct mat P,struct vec b){
int i,j;
struct vec B;
for (i=0;i<n;i++) B.x[i]=0;
for (i=0;i<n;i++) for (j=0;j<n;j++) B.x[i]=P.A[i][j]+b.x[j];
return B;
}

void main(){
struct mat A;
struct vec B,c;
...
B=func1(A,c);
...
}

Компилятор выдаёт ошибку, когда доходит до строчки "B=func1(A,c);", текст ошибки:
"Необработанное исключение в "0x01002407" в "test.exe": 0xC00000FD: Stack overflow."
Если функцию func1 оставить без параметров(и убрать цикл, где используются эти параметры), то всё работает нормально.
В чём, собственно проблема?

Примечание:
У меня проблема с указателями, не могли бы вы показать, как это будет выглядеть?)

Примечание:
Нет комментов и такое название, потому что это не сама программа, а вырезана отдалено от неё часть, для исправления указанной ошибки, на самом деле "..." опускают только ввод и вывод значений структур.

Примечание:
Помучился, почитал(попытался разобратся) дошёл вот до такого:

struct vec func1(struct mat *P,struct vec *b){
int i,j;
struct vec B;
for (i=0;i<n;i++) B.x[i]=0;
for (i=0;i<n;i++) for (j=0;j<n;j++) B.x[i]=(*P).a[i][j]+(*b).x[j];
return B;
}

void main(){
struct mat A;
struct mat *A1=&A;
struct vec x,y;
struct vec *x1=&x,*y1=&y;
...
y=func1(A1,x1);
...
}

Теперь выдаёт ошибку, но пишет адрес уже не связанный с адресом функции.

Примечание:
Ни кто не оказался прав. Проблема была замечена абсолютно случайно: идёт неявное присваивание массивов(во время присваивания структур), что не допускается. Из-за этого и ошибка.
Ответы:
Передавайте указатель на структуру.
никогда не называйте свои функции как func1 func2 и тп.. потом хрен разберешься без бутылки что бы она могла делать.. *учитывая что ни одного комента в коде нет, так вообще прекрасно*


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.