c++ - 如何调用函数在C中抛出一个指针数组
问题描述
任务是用星形图案绘制三角形。
- 每个三角形都有一个单独的功能
- 函数必须通过指针数组调用。
我制作了三角形图案功能。我不能从指针数组中调用函数。当我尝试执行时,无法打印三角形。
代码:
#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);
}
解决方案
这种代码使用 typedef 容易得多
typedef void (*func_ptr)(int*); // func_ptr is a function pointer
func_ptr fun[] = { triangle1, triangle2, triangle3 };
fun[choice](array);
推荐阅读
- yii2 - 如何将文件保存在 PHP Yii2 中的动态位置?
- tensorflow2.0 - TensonFlow 2 Impala 强化学习的分布式策略
- jolt - 地图颠簸变换
- java-8 - Log4j-Slf4j 通过省略 -configFile 但采用 -configuration 表现得很奇怪
- webpack - 如何使用 CRACO Webpack 配置使用 Tailwind CSS 构建 React Styleguidist?
- delphi - Outlook:将附件保存到 FTP 服务器
- python - 如何在 Windows 10 中的 python 中运行 LAMMPS?
- typescript - 如何在 TypeScript 中获取重载方法的第一个参数类型
- angular - 注入解析器时出现 ResolverFactory 注入问题
- android - React-native 应用程序卡在 app:installDebug