Передача в двойном указателе в качестве параметров в C - PullRequest
0 голосов
/ 15 мая 2018

Допустим, есть API следующим образом:

void myAPI(int8** ptr)

Если я хочу передать указатель структуры в эту функцию, это мой код:

typedef myStruct {
    int a;
};

myStruct *ptr = NULL;
memset(ptr, 0, sizeof(myStruct));

myAPI((int8**)&ptr);

Мой вопросчто если вместо использования ptr у меня теперь есть следующее?

myStruct myStruct_info;
memset(&myStruct_info, 0, sizeof(myStruct));

Буду ли я также делать myAPI((int8**)&myStruct_info)?

1 Ответ

0 голосов
/ 15 мая 2018
Would I also be doing myAPI((int8**)&myStruct_info)?

Короткий ответ: нет, вы не можете.

&myStruct_info - это адрес вашей переменной myStruct_info.А параметру для вашей функции myAPI нужен адрес указателя на переменную.

Если вы скажете int8 ** a = (int8**)&myStruct_info;, тогда:

a - holds the address of myStruct_info
*a - the value of myStruct_info

и

**a - means that you take the value stored in myStruct_info and use it as a pointer - REALLY BAD -
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...