首页 > 解决方案 > 如何调用函数在C中抛出一个指针数组

问题描述

任务是用星形图案绘制三角形。

  1. 每个三角形都有一个单独的功能
  2. 函数必须通过指针数组调用。

我制作了三角形图案功能。我不能从指针数组中调用函数。当我尝试执行时,无法打印三角形。

代码:


#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
 
using namespace std;
 
void triangle1(int *array)
{
    int i, j;
    for (i = 0; i < *array  ; i++)
    {
    for (j = 0; j <= i; j++)
    {
     printf("*"); 
     }
     printf("\n");
    }
    printf("\n");
}
 
void triangle2(int *array)
{
    int i, j;
    for (i = *array ; i > 0; i--)
    {
     for (j = i; j >= 0; j--)
     {   
      printf("*");
      }
  printf("\n");
  }
  printf("\n");
}
 
void triangle3(int *array)
{
       for (int i = 0; i < *array  ; i++)
    {
        for (int j = *array; j >= i; j--)
            printf(" ");
       
        for (int k = 0; k <= i; k++)
            printf("*");
      
         printf("\n");
    }
    printf("\n");
}
 
 int main()
{
    int SIZE = 0;
    int i;
    printf("Enter size of array\n");
    scanf_s("%i", &SIZE);
 
       int* array = new int(SIZE);
       int choice;
       void* fun[](int *) = { triangle1,triangle2,triangle3 };
 
       printf("choose a triangle\n");
       scanf_s("%i", &choice);
       
        i= (int)fun[choice];
        printf("%i", i);
 
    
}

标签: c++arraysfor-loop

解决方案


这种代码使用 typedef 容易得多

typedef void (*func_ptr)(int*); // func_ptr is a function pointer


func_ptr fun[] = { triangle1, triangle2, triangle3 };


fun[choice](array);

推荐阅读