Может ли указатель принимать аргументы?В чем разница между этими 3 видами указателей - PullRequest
0 голосов
/ 12 мая 2018

Я хочу знать, в чем смысл следующих утверждений.

int *abc(int,int);
int (*abc)(int,int);

и чем эти указатели отличаются от обычного указателя. например:

int *ptr;

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Может ли указатель принимать аргументы?

Нет, указатель - это просто переменная, в которой хранится адрес ячейки памяти.

int * abc (int, int);

Это объявление функции abc, которое принимает два аргумента типа int и возвращает указатель на тип int.

int (* abc) (int, int);

Здесь abc - указатель, который может указывать на функцию, которая принимает два аргумента типа int и возвращаетint.
Скажем, если у вас есть функция fun:

int fun(int a, int b) {
    return a + b;
}

abc может указывать на fun(), например:

abc = fun;

затемВы можете вызвать функцию fun, используя указатель abc, например:

abc(4, 5);

, чем эти указатели отличаются от обычного указателя.например:
int * ptr;

Здесь ptr - указатель, который может хранить адрес типа int.

Следовательно, все хранилища указателейв некоторой области памяти, разница заключается в адресе типа, на который они указывают.

0 голосов
/ 12 мая 2018

при условии C / C ++
this: int *abc(int,int); является прототипом функции, возвращающей указатель на int и принимающей два аргумента типа int

this: int (*abc)(int,int); - это объявление указателя на функцию, возвращающую int и принимающую два аргумента типа int

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