Struct в функции

  • Автор темы Folderx
  • Дата начала
F

Folderx

#1
Код:
#include <stdio.h>

int func();

int main()
{

struct test { int a; } s1;
s1.a = 1;
printf("%d\n", s1.a);

struct test *s2;
s2 = &s1;
s2->a = 2;
printf("%d\n", s1.a);

printf("%d\n", func(&s1));

return 0;

} 

int func(s3)
struct test *s3;
{
printf("%d\n", (*s3).a ); //в этой строке
return 0;
}
Выдаёт ошибку в функции func
error: dereferencing pointer to incomplete type

Причём если через s2 менять значение в главной программе, всё правильно выводится, а если в функции - не работает.
 

grigsoft

Well-known member
15.11.2005
735
0
#2
Описание структуры у тебя локальное, в функции. И использоваться она может только в этой функции, видимо.
 
F

Folderx

#3
Точно функция не видела слово test

вынес строчку за пределы main
struct test { int a; };

в main написал вместо неё
struct test s1;

Прога заработала, спасибо, grigsoft.
 
04.09.2006
2 566
3
#4
<!--QuoteBegin-Folderx+7:05:2007, 08:21 -->
<span class="vbquote">(Folderx @ 7:05:2007, 08:21 )</span><!--QuoteEBegin-->в main написал вместо неё
struct test s1;
[snapback]64982" rel="nofollow" target="_blank[/snapback]​
[/quote]
Нужно test s1;
 

grigsoft

Well-known member
15.11.2005
735
0
#5
Для: European
Фиг тебе, ты ж на код посмотри - это олд-скульный чистый С :(
 
04.09.2006
2 566
3
#6
<!--QuoteBegin-grigsoft+7:05:2007, 13:17 -->
<span class="vbquote">(grigsoft @ 7:05:2007, 13:17 )</span><!--QuoteEBegin-->Фиг тебе, ты ж на код посмотри - это олд-скульный чистый С
[snapback]65047" rel="nofollow" target="_blank[/snapback]​
[/quote]
Хм-м, не знал, не знал...
 
F

Folderx

#7
<!--QuoteBegin-"European"+-->
<span class="vbquote">("European")</span><!--QuoteEBegin-->Нужно test s1;[/quote]
Не, в С надо полностью писать, это в С++ можно сразу.