我正在尝试编写一个程序,通过调用函数来打印金字塔(按值传递而不是按地址传递)。
好吧,该函数只是运行for循环来打印金字塔,但实际的打印语句是在main中写的。程序的其余部分似乎很好,但函数调用中有错误。
你能告诉我我做错了什么吗?这是我遇到麻烦的语法。错误是“void类型的参数与'constant char *'的参数类型不兼容”#include<stdio.h>
void pyramid(int); //function declaration
int main()
{
int r1;
printf("Enter the number of rows you would like printed:");
scanf("%d",&r1);
printf(pyramid(r1)); //function call
return 0;
}
void pyramid(int r2) //function definition
{
int i,j;
for(i=r2;i>=1;i--)
{
for(j=r2;j<=i;j--)
{
printf("*");
}
printf("\n");
}
}
答案 0 :(得分:1)
printf的原型是
int printf(const char *restrict format, ...);
但您正在尝试通过调用void
将printf(pyramid(r1));
传递给它。直接调用函数,如pyramid(r1);
,而不是printf(pyramid(r1));
。
答案 1 :(得分:1)
void pyramid(int); //function declaration
此处函数金字塔不会返回任何值,
但您希望它在以下声明中返回一个值
printf(pyramid(r1)); //function call
此程序也会进入无限循环, 这里:
for(i=r2;i>=1;i--)
{
for(j=r2;j<=i;j--) //**j will always be less than i**
{
printf("*");
}
printf("\n");
}