Рубрики

Объявите функцию C / C ++, возвращающую указатель на массив целочисленных указателей

Объявите «функцию с аргументом int *, которая возвращает указатель на массив из 4 целочисленных указателей».

На первый взгляд это может показаться сложным, мы можем объявить требуемую функцию с помощью ряда разложенных операторов.

1. Нам нужна функция с аргументом int * ,

function(int *)

2. функция с аргументом int * , возвращающая указатель на

(*function(int *))

3. функция с аргументом int * , возвращающая указатель на массив из 4

(*function(int *))[4]

4. функция с аргументом int * , возвращающая указатель на массив из 4 целочисленных указателей

int *(*function(int *))[4];

Как мы можем гарантировать, что вышеуказанная декларация верна? Следующая программа может перепроверить нашу декларацию,

#include<stdio.h>

  
// символический размер
#define SIZE_OF_ARRAY (4)

  
// указатель на массив (SIZE_OF_ARRAY) целых чисел

typedef int *(*p_array_t)[SIZE_OF_ARRAY];

  
// Объявление: компилятор должен выдавать ошибку
// если не соответствует определению

int *(*function(int *arg))[4];

  
// Определение: «функция» возвращает указатель на
// массив целочисленных указателей

p_array_t function(int *arg)

{

   // массив целочисленных указателей

   static int *arr[SIZE_OF_ARRAY] = {NULL};

  

   // вернуть это

   p_array_t pRet = &arr;

  

   return pRet;

}

  

int main()

{          
}

Макрос SIZE_OF_ARRAY используется для символического представления размера массива. Тип p_array_t определяется как «указатель на массив из 4 целых чисел». Если наше объявление неверно, программа выдает ошибку при определении функции .

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Объявите функцию C / C ++, возвращающую указатель на массив целочисленных указателей

0.00 (0%) 0 votes