为什么我C语言的自定义函数被直接跳过不执行了?

#include<stdio.h>
void sx(int i,int B,int S,int G,int a[])
{    
for(i=0;i<999;i++){
        B=a[i]/100;
        S=a[i]/10%10;
        G=a[i]%10;
        if(a[i]==(B*B*B+S*S*S+G*G*G)&&B!=0){
            printf("三位数的水仙花数是: %d \n",a[i] );
            
        }
    }
}
int main()
{
    int i=0,n=1,B,S,G;
    int a[999]={0};
    for(i=0;i<999;i++){
        a[i]=n;
        n++;
    }
    void sx(int i,int B,int S,int G,int a[]);
    
    return 0;
    
}

两个问题:

1、2处的写法根本不是调用函数,纯粹就是个函数声明。

2、执行完1处的for循环后,i的值已经是999了。

 

调用函数的时候,是不需要加函数的返回类型

传的参数也不用加数据类型

改成 sx(i, B, S, G, a)

但是你的i 在sx调用前 已经是999了

在sx里面不会进入到for里面吗

在调用sx的前 i = 0;

复习复习函数怎么调用的