[C++] передача пользовательского типа (структуры) функции
Привет. Я экспериментировал с этим и обнаружил странное поведение, которое не могу понять.
Рассмотрим этот код:
#include "stdafx.h" void passStructAsParam(Student s); struct Student { int rollno; char gender; int age; }; int main() { Student s; s.rollno = 40; s.gender = 'm'; s.age = 20; passStructAsParam(s); return 0; } void passStructAsParam(Student s) { printf("%d \n", s.rollno); printf("%c \n", s.gender); printf("%d \n", s.age); }
Этот код не будет работать, потому что структура определяется после объявления функции, но если я это сделаю:
#include "stdafx.h" void passStructAsParam(struct Student s); struct Student { int rollno; char gender; int age; }; int main() { Student s; s.rollno = 40; s.gender = 'm'; s.age = 20; passStructAsParam(s); return 0; } void passStructAsParam(struct Student s) { printf("%d \n", s.rollno); printf("%c \n", s.gender); printf("%d \n", s.age); }
Это прекрасно работает. Поэтому возникает вопрос: почему, когда я прямо пишу, что студент-это структура в списке параметров функции, она работает, а если я этого не делаю, то нет ?
Что я уже пробовал:
Задавая вопрос здесь в CodeProject.com
Richard MacCutchan
В чем заключается ошибка, которую вы видите? Кроме того, вы не должны передавать полные структуры в качестве параметров, это крайне расточительно. Пройдите по адресу или ссылке.