Я пытаюсь передать структуру по ссылке в C, чтобы я мог изменять значения внутри функции. Это код, который у меня есть до сих пор, но он вызывает некоторые предупреждения и одну ошибку.C - передать структуру по ссылке
main.c
#include <stdio.h>
#include "myfunctions.h"
#include "structures.h"
int main(int argc, char const *argv[] {
struct MyStruct data;
data.value = 6;
printf("Before change: %d\n", data.value);
changeData(data);
printf("After change: %d\n", data.value);
}
myfunctions.c
#include "structures.h"
void changeData(MyStruct data) {
data.value = 7;
}
myfunctions.h
#ifndef MyStruct
#define MyStruct
void changeData(MyStruct data);
#endif
structures.h
typedef struct {
int value;
} MyStruct;
Ошибки Произведено
In file included from main.c:2:0:
myfunctions.h:4:1: warning: parameter names (without types) in function declaration
void changeData(MyStruct data);
^
In file included from main.c:3:0:
structures.h:5:1: warning: unnamed struct/union that defines no instances
} MyStruct;
^
main.c: In function ‘main’:
main.c:9:5: error: ‘data’ undeclared (first use in this function)
data.value = 6;
^
main.c:9:5: note: each undeclared identifier is reported only once for each function it appears in
'недействительным changeData (MyStruct * данные)' и 'changeData (& data) ' –
Если вы хотите передать указатель на структуру, вам нужно сделать это явно. –
Убедитесь, что вы указали ** Связанные ** в правой части страницы. Ваш заголовок появляется много раз. –