| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:请大家帮忙,这个程序我有个疑问
只看楼主 加入收藏
SHEEP三三
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2014-12-26
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:10 
请大家帮忙,这个程序我有个疑问
#include<stdio.h>
int main(void)
{
    int i;
    double power(int,int);
    for(i=1;i<10;i++)
        printf("power(2,%d)=%8.4f,power(-3,%d)=%11.4f\n",i,power(2,i),i,power(-3,i));
    return 0;
}
double power(int x,int n)
{
    int i;
    double p;
    p=1;
    for(i=1;i<=n;i++)
        p*=x;
    return p;
}
这个里面主函数int main(void)是什么意思?然后我把它变成main(void)就不行,那个子函数就不运行,但是改成这个 main() 就又可以了 为什么?
搜索更多相关主题的帖子: double power 
2015-01-28 13:04
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:0 
首先,声明你的子函数,不然main不认识。
#include <stdio.h>
double power(int x,int y);
int main()
{
}
其次 int main(void)相当于int main(),void可有可无.都表示没有参数.
这里的int指返回类型,就是这个方法要return一个int类型的数
main是方法名.但不同于一般的方法名,它是函数入口.就是当运行这个文件的时候第一个执行的方法.

最后,void main()表示接受任何参数且无返回值

授人以鱼,不如授人以渔
2015-01-28 13:41
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:4 
另外,void main  普遍认为是一种错误的做法。

授人以鱼,不如授人以渔
2015-01-28 13:43
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:4 
最好在顶部申明你用的函数

我不是砖家,要努力成为砖家。
2015-01-28 14:40
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:4 
因为你的程序是依附在操作系统上运行的(你够牛就裸机运行,谁也拿你没办法),所以需要返回值来判断程序是因为什么原因结束的。

所以,main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。

至于括号里的void,个人认为可有可无

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2015-01-28 15:45
qianrenzhang
Rank: 2
等 级:禁止访问
帖 子:34
专家分:59
注 册:2015-1-26
收藏
得分:4 
顶起
2015-01-28 16:56
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:4 
又是一个main()函数的问题......

不论是写main()函数的返回值类型是写出void,还是int,编译的时候都是作为int处理了。既然把main()称为是函数,说明它一样也要被别的函数调用。通常情况下,是函数就得要返回,只是有无返回值的问题。而系统在调用main()函数之后,需要main()函数执行的结果是怎样的,是正常退出了,还是有错误发生了。一般如果正常的话,main()要给系统返回0,有问题的话返回1。这也是C标准规定的。
如果源代码中并没有明显地写出具体的返回值,编译器认为是正常退出了,就帮助程序员添加上了return 0;这一句。但这不是C标准规定的。虽然现在的编译器多数都会允许你犯这个错误,但如果有一个严格执行C标准的编译器会报错。

在C语言中,main()函数如果没有参数,应当用void。这个是C标准规定的。不过你不写一般情况没关系,编译器原谅你了。不过遇到一个严厉的编译器,可能这个时候你会以为编译器有问题。

C标准只有两种形式的main()函数:
int main(void);
int main(int argc, char * arg[]);

一直到现在有一个问题都没有深入的思考:
有一个程序fun,其中的main()函数形式是int main(void);,当执行这个程序的时候,到底有没有把程序名传入呢?
比如,在Linux系统下,执行下面的命令
./fun
main()函数能否获取到fun的字符串呢?
之前有没有人思考过这个问题?
2015-01-28 17:26
SHEEP三三
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2014-12-26
收藏
得分:0 
谢谢大家~~
2015-03-02 10:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 7楼 八画小子
。。。

授人以渔,不授人以鱼。
2015-03-02 18:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用八画小子在2015-1-28 17:26:23的发言:

又是一个main()函数的问题......
 
不论是写main()函数的返回值类型是写出void,还是int,编译的时候都是作为int处理了。既然把main()称为是函数,说明它一样也要被别的函数调用。通常情况下,是函数就得要返回,只是有无返回值的问题。而系统在调用main()函数之后,需要main()函数执行的结果是怎样的,是正常退出了,还是有错误发生了。一般如果正常的话,main()要给系统返回0,有问题的话返回1。这也是C标准规定的。
如果源代码中并没有明显地写出具体的返回值,编译器认为是正常退出了,就帮助程序员添加上了return 0;这一句。但这不是C标准规定的。虽然现在的编译器多数都会允许你犯这个错误,但如果有一个严格执行C标准的编译器会报错。
 
在C语言中,main()函数如果没有参数,应当用void。这个是C标准规定的。不过你不写一般情况没关系,编译器原谅你了。不过遇到一个严厉的编译器,可能这个时候你会以为编译器有问题。
 
C标准只有两种形式的main()函数:
int main(void);
int main(int argc, char * arg[]);
 
一直到现在有一个问题都没有深入的思考:
有一个程序fun,其中的main()函数形式是int main(void);,当执行这个程序的时候,到底有没有把程序名传入呢?
比如,在Linux系统下,执行下面的命令
./fun
main()函数能否获取到fun的字符串呢?
之前有没有人思考过这个问题?

看看如下例子:

代碼
程序代码:
using namespace System;

void wmain(void)
{
    array<String^>^ arguments = Environment::GetCommandLineArgs();
    for (int index = 0; index < arguments->Length; ++index)
    {
        Console::WriteLine(L"參數{0}: {1}", index + 1, arguments[index]);
    }

    Console::Write(L"\n按任意鍵繼續...");
    Console::ReadLine();
}


命令行輸入
图片附件: 游客没有浏览图片的权限,请 登录注册


運行結果
图片附件: 游客没有浏览图片的权限,请 登录注册


授人以渔,不授人以鱼。
2015-03-02 19:47
快速回复:请大家帮忙,这个程序我有个疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021884 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved