Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char - C (СИ)

  1. Задание: Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char. Можно объявить этот массив так: char *(*(*a[N])())(); А можно воспользоваться typedef:C1 2 3 4 5 6 7 typedef char *pc; // указатель на тип char typedef pc fpc();  // указатель на функцию? typedef fpc *pfpc;  // указатель на функцию указателя? typedef pfpc fpfpc(); //функция указателя на указатель функции??? typedef fpfpc * //?? pfpfpc;//? pfpfpc a[N]; //??? (подозреваю что это и есть объявление массива из N указателей на функции,) Просьба ответить знающим людям. спасибо Добавлено через 16 минут 5 и 6 строчка читаются вместе это я ошибся при переносе


textual

Код:

typedef char *pc; // указатель на char
typedef pc fpc();  // функция, возвращающую указатель на char
typedef fpc *pfpc;  // указатель на функцию, возвращающую указатель на char
typedef pfpc fpfpc(); //функция, возвращающая указатель на функцию, возвращающую указатель на char
typedef fpfpc * pfpfpc;// указатель на функцию, возвращающую указатель на функцию, возвращающую указатель на char
pfpfpc a[N]; // объявление массива из N указателей на функции, возвращающую указатель на функцию, возвращающую указатель на char


Похожие ответы
  1. Задана последовательность из N вещественных чисел. Определить сколько чисел меньше K, равно K и больше K. (массив random )

  1. Нужно написать рекурсивную функцию (программу) которая будет искать минимальный элемент в массиве.

  1. Как с помощью одного цикла отобразить на экране содержимое обоих массивов, при этом первый массив должен отображаться в первой строке, а каждый элемент второго массива должен помещаться под соответствующим элементом первого массива. Чтобы выводилось вот-так, только с помощью одного цикла. 1.00 | 2.00 | 3.00 | 4.00 | 5.00 | 6.00 | 7.00 | 8.00 | 1.00 | 3.00 | 6.00 | 10.00 | 15.00 | 21.00 | 28.00 | 36.00 |C1 2 3 4 5 6 7 8 9 10 11 12     for (index = 0; index < 2; index++)     {         for (index = 0; index < SIZE; index++)             printf("%5.2lf | ", array_one[index]);           printf("\n");           for (index = 0; index < SIZE; index++)             printf("%5.2lf | ", array_two[index]);            printf("\n");     }

  1. Создать массив, заполнить 20 элементами, сложить и вывести на экран все кратные 3Добавлено через 4 минуты Помогите плиз

  1. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 void save_birnar(){ int i; FILE *fp; fp = fopen( "output.bin", "ab+" ); int N=100; for ( i = 0; i < N; i ++ )     fp = fopen( "output.bin", "ab+" ); // открыть двоичный файл на запись fwrite ( contacts[i].name, sizeof(contact), fp ); fwrite ( contacts[i].last_name, sizeof(contacts), N, fp ); // записать весь массив fwrite ( contacts[i].number, sizeof(contact), N, fp ); fwrite ( contacts[i].viber, sizeof(contact), N, fp ); fclose ( fp ); // закрыть файл   }Столкнулась с проблемой не могу сохранить структуруC1 2 3 4 5 6 7 8 struct contact { char name[30]; char last_name[30]; char number[30]; char viber[10]; int del; } *contacts;в двоичный фаил, не могу пользоваться нормально функцией fwrite. Вопрос, как записать массив структур в фаил и как прочитать потом данный фаил для дальнейшей работы с ним?

  1. Сформировать массив из элементов исходных массивов, больших второго элемента первого массива и положительных элементов второго массива. Требуется сформировать новый массив по заданию. В программе реализовать: 1) генерацию случайным образом элементов исходных массивов; 2) выполнение действия в соответствии с условием задачи; 3) порядок вывода: • исходные массивы, • сформированный массив, если он был сформирован. В противном случае – соответствующее сообщение. Помогите, а то не могу сделать

  1. Сформировать массив M, элементы которого mi = Cni , где: Cni = n! / i! (n - i)! , n = 20; i = 1,2,…, 5 Должно быть минимум две функции, первая - заполнение массива, вторая - вывод массива на экран.

  1. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include   double sum2d(int a, int b, const double  mass[a][b]);   int main(void) {     const int YEARS = 5;     const int MONTHS = 12;     const float rain[YEARS][MONTHS] =     {         { 4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6 },         { 8.5, 8.2, 1.2, 1.6, 2.4, 0.5, 2.0, 9.0, 3.0, 9.1, 4.7, 3.0 },         { 9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4 },         { 7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2 },         { 7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2 },     };       printf("Среднегодовое количество осадков за 5 лет = %f",sum2d(YEARS, MONTHS, rain[YEARS][MONTHS])/YEARS); return 0; }   double sum2d(int a, int b, const double  mass[a][b]) {     int i, j;     int total;     double **pt;     **pt = mass[0][0];       for (i = 0; i < a; ++i)     {         for(j = 0; j < b; ++j)         {             total+=**pt;             ++pt;         }     } return total; }При компиляции помимо куци предупреждений выдается следующие ошибки: rain.c:20:2: error: incompatible type for argument 3 of ‘sum2d’ printf("Среднегодовое количество осадков за 5 лет = %f",sum2d(YEARS, MONTHS, rain[YEARS][MONTHS])/YEARS); ^ rain.c:3:8: note: expected ‘const double (*)[(sizetype)(b)]’ but argument is of type ‘float’ double sum2d(int a, int b, const double mass[a][b]);Добавлено через 23 секунды по заданию считать нужно с применением указателей.

  1. Дан массив размерности n. Заполнить массив случайными числами в диапазоне [-100;100]. Перевернуть массив: a[n-1]↔a[0], a[n-2]↔a[1] и т.д. Для работы с массивом использовать функцию. пример программыC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 // Обнулить в массиве отрицательные элементы #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; void func(int *a, int n) {     for (int i = 0; i < n; i++)         if (a[i] < 0) a[i] = 0; } int main() {     int *a;     int n;     srand(time(NULL));     printf("n= ");     scanf("%d", &n);     a = (int*)malloc(n*sizeof(int));     for (int i = 0; i

  1. Найти максимальный элемент и поменять его местами с последним элементом массива. В программе предусмотреть и реализовать: 1) генерацию элементов исходного массива с помощью датчика случайных чисел; 2) выполнение в соответствии с условием задачи; 3) порядок вывода: • исходный массив, • максимальный или минимальный элемент массива и его номер, • массив, полученный в результате выполнения задания.