2012-05-26 3 views
0

Если функция:C++ передавая структуру и передавая указатель взаимозаменяемым?

void foo(struct* bar) 
{ 
} 

И

struct foobar; 

ли один экземпляр структуры, будет вызов

foo(foobar); 

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

+1

Это не должно скомпилировать a) потому что вы использовали ключевое слово 'struct' как имя класса и b), поскольку вам не хватает амперсанда (&) в вашем вызове или добавьте дополнительную звездочку в свой параметр функции (предположительно, первый по вашему вопросу). – chris

ответ

4

Является единственным экземпляром структуры, будет вызов foo (foobar); Обращаться так, как если бы это был указатель на один массив элементов? Будет ли вызов законным или он требует перегрузки?

Нет, не будет. Вызов не является законным, и перегрузка может заставить вызов работать.

Если функции требуется указатель на struct, тогда вы должны указать указатель на struct. Массивы являются специальными, так как они распад указателю на первый элемент.

Смежные вопросы