Передача указателя на структуру - PullRequest
0 голосов
/ 18 мая 2011

Привет У меня есть функция A ( xy * abc), которая принимает указатель на структуру.

typedef struct
{
int a;
char * b;
} xy;

typedef struct
{
xy c;
xy d;
} uv;

uv *sha;

Если мне нужно вызвать функцию A для c и d, используя uvкак я должен передать аргумент?Я вызываю функцию A, используя это:

A (&sha->c);
A (&sha->d);

Правильно ли этот вызов?

Пожалуйста, помогите мне

Ответы [ 3 ]

5 голосов
/ 18 мая 2011

Если uv является структурой, а не указателем на структуру, вам нужно сделать A(&uv.c), но в вашем случае uv - это тип структуры, а не фактическая структура, вам нужна переменнаятипа уф:

uv somevar;
A(&somevar.c);
2 голосов
/ 18 мая 2011

Создайте переменную типа uv и передайте ее функции:

uv var; 
A(&(var.c)); 

A(xy*) -> принимает адреса объекта типа xy
var.c -> возвращает объект типа xy
&var.c -> возвращает адрес возвращенного xy объекта

uv *sha;
A(&(sha->c));
A(&(sha->d));

A(xy*) -> принимает адреса объекта типа xy
sha->c -> возвращает объект типа xy
&(sha->c) -> возвращает адрес возвращенного xy объекта

1 голос
/ 18 мая 2011

Хотя это кажется правильным, но я сделаю это так:

A (&(sha->c));
A (&(sha->d));

Обратите внимание на дополнительные паратезы;это сделано для того, чтобы добавить больше подробностей, хотя компилятору это, вероятно, не понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...