• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Struct в функции

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

Folderx

Код:
#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 менять значение в главной программе, всё правильно выводится, а если в функции - не работает.
 
G

grigsoft

Описание структуры у тебя локальное, в функции. И использоваться она может только в этой функции, видимо.
 
F

Folderx

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

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

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

Прога заработала, спасибо, grigsoft.
 
E

European

<!--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;
 
G

grigsoft

Для: European
Фиг тебе, ты ж на код посмотри - это олд-скульный чистый С :(
 
E

European

<!--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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!