通过在C中调用函数(按值传递)进行打印

时间:2014-07-11 06:05:00

标签: c function

我正在尝试编写一个程序,通过调用函数来打印金字塔(按值传递而不是按地址传递)。

好吧,该函数只是运行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");
    }
}

2 个答案:

答案 0 :(得分:1)

printf的原型是

int printf(const char *restrict format, ...);

但您正在尝试通过调用voidprintf(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");
}