c语言中void main的用法

合集下载

void main与int main之间的区别是什么?

void main与int main之间的区别是什么?

最后,关于为什么void main(void)是一种错误的用法,这个链接提供了一些更细节化的背景资料:
/auj/voidmain.shtml
总之,尽量用int main()这个更标准,程序也会更安全。
如果你在论坛上写了像“void main”这样的代码而被警告,那么最好改过来。不要用"我的老师告诉我这么做是对的"之类的话来为自己开脱;老师们总是习惯犯错误(teachers have a bad habit of being wrong)。写安全的,合乎标准的代码,大家就可以专注于你程序中其它的问题而不是在这种规范方面的东西上浪费时间。
int main ( void )
int main ( int argc, char *argv[] )
我们可以对main函数做轻微的改变,比如我们可以用一个自定义的类型代替int(当然这个类型必须被定义为int型),还可以把*argv[]改为**argv,等等。
如果我们不想在命令行下对程序输入参数,可以选择第一种形式。
但是int main(int argc, char *argv[], char *envp[])又是怎么回事呢?
好比是标准的扩展版,main()函数可以在一些系统中提取一个额外的参数用来访问环境变量。这个用法不能保证在每个编译环境中都行得通,所以使用 envp 这个参数是还是谨慎为妙。
void main()函数是如何处理的?
在C/C++正规的调用/返回函数中,如果你不想让一个函数返回任何值,你可以使用void定义返回类型。比如,一个不接受任何参数并且无任何返回值的函数原型可以像这样:
void foo(void);
一个常见的误解是,这种逻辑同样适用于main()函数。呵呵,事实并非如此,main()函数是很特殊的,无论何时你都应该依照标准定义main()函数(译:即使用int main()的形式!),并把返回值定义为int。有时void main()的例外形式是可以出现的,但这仅限于某些特定的系统。如果你不敢肯定正在使用这些系统,那么答案很简单,不能使用void main()的形式。

c语言三种传递方式

c语言三种传递方式

1.值传递:有一个形参向函数所属的栈拷贝数据的过程,如果值传递的对象是类对象或是大的结构体对象,将耗费一定的时间和空间。
2.指针传递:同样有一个形参向函数所属的栈拷贝数据的过程,但拷贝的数据是一个固定为4字节的地址。
3.引用传递:同样有上述的数据拷贝过程,但其是针对地址的,相当于为该数据所在的地址起了一个别名。
C++函数的三种传递方式为:值传递、指针传递和引用传递。
值 += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的一块临时空间把y的值 送给了x;这样也增加了程序运行的时间,降低了程序的效率。
}
void main(void){
int y = 0;
fun(y);
cout<<<<\"y = \"<<y<<endl; //y = 5;
}
cout<<<<\"y = \"<<y<<endl; //y = 5;
}
引用传递:
void fun(int &x){
x += 5; //修改的是x引用的对象值 &x = y;
void fun(int *x){
*x += 5; //修改的是指针x指向的内存单元值
}
void main(void){
int y = 0;
fun(&y);
效率上讲,指针传递和引用传递比值传递效率高。一般主张使用引用传递,代码逻辑上更加紧凑、清晰。
引用传递做函数参数”是C++的特性,C语言不支持。

c语言void的用法

c语言void的用法

c语言void的用法许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。

下面小编就跟大家介绍下c语言void 的用法。

c语言void的用法1.void的含义void的字面意思是“无类型”,void*则为“无类型指针”,void*可以指向任何类型的数据。

void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:voida;这行语句编译时会出错,提示“illegaluseoftype'void'”。

不过,即使voida的编译不会出错,它也没有任何实际意义。

void真正发挥的作用在于:(1)对函数返回的限定;(2)对函数参数的限定。

我们将在第三节对以上二点进行具体说明。

众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。

例如:float*p1;int*p2;p1=p2;其中p1=p2语句会编译出错,提示“'=':cannotconvertfrom'int*'to'float*'”,必须改为:p1=(float*)p2;而void*则不同,任何类型的指针都可以直接赋值给它,无需进行强制类型转换:void*p1;int*p2;p1=p2;但这并不意味着,void*也可以无需强制类型转换地赋给其它类型的指针。

因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”。

道理很简单,我们可以说“男人和女人都是人”,但不能说“人是男人”或者“人是女人”。

下面的语句编译出错:void*p1;int*p2;p2=p1;提示“'=':cannotconvertfrom'void*'to'int*'”。

C语言上机题参考答案

C语言上机题参考答案
}
20、设有1<=n<=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
n s m
示例:
输入:
6 1 3
输出:
3 6 4 2 5 1
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
8、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
if(x>1) y=6*x+5;
printf("%d",y);
}
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
#include<stdio.h>
void main()
{int i,j,n;
printf("%.2f\n",(a+b+c)/3.0);

C语言之Main函数返回值问题分析

C语言之Main函数返回值问题分析

C语言之Main函数返回值问题分析C语言之Main函数返回值问题分析:很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。

C/C++ 中从来没有定义过void main( ) 。

C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( ) 从来就不存在于 C++ 或者 C )。

下面我分别说一下 C 和C++ 标准中对 main 函数的定义。

“The C programming Language(《C 程序设计语言》)用的就是main( )。

”--- 这是因为第一版的C语言只有一种类型,那就是int,没有char,没有long,没有float,…………既然只有一种类型,那么就可以不写,后来的改进版为了兼容以前的代码于是规定:不明确标明返回值的,默认返回值为int,也就是说 main()等同于int main(),而不是等同于void main()。

在C99中,标准要求编译器至少给 main() 这种用法来个警告。

1. C在 C89 中,main( ) 是可以接受的。

Brian W. Kernighan 和Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。

不过在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void )int main( int argc, char *argv[] )(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)当然,我们也可以做一点小小的改动。

c语言上机实验题

c语言上机实验题
c=2154。请直接在函数fun的{}中输入内容.
#include <stdio.h>
void fun(int a,int b, int *c)
{
}
void main(void)
{
int a=45,b=12,c;
fun(a,b,&c);
printf("%d",c);
}
m=50;
fun(a,&n, m);
printf("n=%d\n",n);
for(i=0;i<n;i++)
printf("%5d",a[i]);
}
17.函数void fun(int a,int b, int *c)的功能是:将2个两位正整数ab合为一个整数存放在c中,
#include <stdio.h>
void fun(int x, int pp[], int *n)
{
}
void main()
{
int pp[20];
int i,n;
fun(30,pp,&n);
for(i=0;i<n;i++)
printf("%4d",pp[i]);
#include <stdio.h>
#include <string.h>
void fun(char a[], int k,int n)
{
}
void main(void)
{
char a[100]="hellollo world!";

c语言中main的含义

c语言中main的含义

C语言中main的含义简介在C语言中,`m ai n`是一个特殊的函数,是程序执行的起点和入口。

本文将深入探讨`mai n`函数的含义,以及它在C语言程序中的作用。

`main`函数的定义与声明在C语言中,`m ai n`函数的定义和声明如下所示:i n tm ai n(vo id){//执行程序的代码r e tu rn0;}`main`函数的参数无参数形式`m ai n`函数的无参数形式声明如下:i n tm ai n(vo id)这表示`ma in`函数不接收任何参数。

带参数形式`m ai n`函数的带参数形式声明如下:i n tm ai n(in ta rg c,c h ar*a rg v[])其中,`ar gc`表示命令行参数的个数,`a rg v`是一个指向字符串数组的指针,每个字符串表示一个命令行参数。

程序入口与起点在执行C语言程序时,操作系统会首先调用`ma in`函数作为程序的入口和起点。

`ma in`函数是程序与操作系统之间的桥梁,通过`ma in`函数,程序开始执行并产生相应的结果。

`main`函数的返回值`m ai n`函数的返回值是一个整数,表示程序的终止状态。

根据惯例,返回值为0表示程序正常终止,而非零值则表示程序异常终止,可以用于表达程序的执行结果。

`main`函数的执行过程`m ai n`函数的执行过程可以分为三个阶段:初始化阶段、执行阶段和清理阶段。

初始化阶段在初始化阶段,操作系统会完成一些必要的准备工作,例如为程序分配内存空间、加载库函数等。

执行阶段在执行阶段,程序会按照`m ai n`函数中编写的代码逐行执行,实现程序的功能和逻辑。

清理阶段在执行阶段结束后,操作系统会清理程序运行所占据的内存空间,释放系统资源。

`main`函数的常见用法执行简单程序`m ai n`函数可以用于执行简单的程序,例如打印"H el lo,W o rl d!"等。

#i nc lu de<s td io.h>i n tm ai n(vo id){p r in tf("He ll o,Wor l d!\n");r e tu rn0;}处理命令行参数通过带参数形式的`m a in`函数,我们可以处理命令行参数,实现程序的灵活性和可配置性。

关于C语言的void main

关于C语言的void main

关于C语言的void main()作者:admin 发布时间:2012-02-13 17:41 来源:C语言中文网人围观分享到:QQ空间新浪微博人人网腾讯微博豆瓣15很多人甚至市面上的一些书籍,都使用了void main( ),其实这是错误的。

C/C++中从来没有定义过void main( )。

C++之父Bjarne Stroustrup 在他的主页上的FAQ中明确地写着The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( )从来就不存在于C++或者C)。

下面我分别说一下C和C++标准中对main函数的定义。

一、 C语言中的main()在C89中,main( )是可以接受的。

Brian W. Kernighan和Dennis M. Ritchie 的经典巨著The C programming Language 2e(《C 程序设计语言第二版》)用的就是main( )。

不过在最新的C99标准中,只有以下两种定义方式是正确的:int main(void)int main(int argc, char *argv[])(参考资料:ISO/IEC 9899:1999 (E) Programming languages ? C 5.1.2.2.1 Program startup)当然,我们也可以做一点小小的改动。

例如:char *argv[]可以写成char **argv;argv和argc可以改成别的变量名(如intval和charval),不过一定要符合变量的命名规则。

如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])。

main函数的返回值类型必须是int,这样返回值才能传递给程序的调用者(如操作系统)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语言中void main的用法
在C语言中,void main是最常见的main函数定义方式。

但是在使用void main时也需要格外小心,因为它并不是标准的C语言规范在上所标注的方式。

下面,我们来详细一下void main的用法。

一、void main的定义方式
下面是void main的定义方式:
```
void main()
{
//执行代码
}
```
二、编译器是否支持
在标准的C语言中,main函数需要返回一个整型值。

但是某些编译器允许使用void main()的方式定义main函数。

这种方式在一些旧版的编译器中被接受,但在现代标准的C语言中已经不再推荐使用。

三、void main的缺陷
尽管在一些旧版的编译器中可以使用void main()的方式定义main函数,但在C语言标准中这种定义方式是被禁止的。

根据C99标准和
C++11标准,main函数的原型应该是:
```
int main(void)
```
在实际编程中,为了避免可能的兼容性问题,尽量避免使用void main()的方式定义main函数。

四、应该用哪种方式
应该使用int main(void)的方式来定义main函数。

这种方式是标准的C语言规范,并被广泛接受和支持。

此外,它也避免了使用void main()可能会发生的兼容性问题,使得C程序更加稳健和可靠。

五、总结
虽然在历史上有些编译器允许使用void main()的方式来定义main函数,但是在现代的C语言标准中已经被禁止了。

为了避免可能的兼容性问题,我们应该尽量避免使用void main()这种方式来定义main函数,而应该使用标准的int main(void)方式。

这样既符合规范,也能保证程序的稳定性和可靠性。

相关文档
最新文档