C отправляет фиктивное целое число в качестве ссылочного указателя без определения переменной - PullRequest
1 голос
/ 08 апреля 2019

планирую вызвать функцию test_func.

Один из способов - определить переменную и отправить ее адрес, например:

int dummy;
test_func(&dummy);

Это отлично работает. Но что, если я решу избежать определения фиктивной переменной? Такая реализация завершается с ошибкой компилятора:

test_func(&int());

main.c ~~~ (onlinegdb)

#include <stdio.h>

int action(int *x)
{
    int error_code=0;
    *x=123;
    return error_code;
}

int test_func(int *x)
{
    if(action(x))
    {
        printf("success!\n");
        return 0;
    }
    else
    {
        printf("failue!\n");
        return 1;
    }
}

int main()
{
    test_func(&int());
    return 0;
}

Как я могу вызвать эту функцию таким образом?

1 Ответ

1 голос
/ 08 апреля 2019

Хотя яснее всего просто использовать переменную, вы можете получить то, что ищете, с помощью составного литерала :

test_func(&(int){1});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...