谁能帮我分析一下C语言的这个程序

2024-12-04 03:37:39
推荐回答(5个)
回答1:

main前面的int 表示返回值,在平常情况下没有作用,只有当该函数被调用时才起作用。如果没有int,那么就默认返回值为0。
你的代码有点错误,两个for(i=0;i<4;i++);后面不应该有分号,如果有分号,那么for循环就没有进去,也就是没有给数组赋值。当然会出现内存错误。
你把两个for语句后面的分号去点就行了
# include
int main ()
{
int a[4];
int i;
for(i=0;i<4;i++)
a[i]=i;
for(i=0;i<4;i++)
printf("%d ",a[i]);
}

返回值,举个例子:就是编的每一个程序都可以看成一个函数,就是有输入,有输出,这个输出就是返回值的一种。格式是return +结果
C语言中的函数有两种形式:1)有返回值,2)无返回值。有返回值的函数会把执行的结果(也就是你写这个函数的目的)返回到主函数中。没有返回值的函数主要是为了完成某种任务(其实这是废话,函数的功能就是为了完成某种任务。)而一般没有任何值返回到主函数中(也可以通过在无返回值的函数中操作全局变量来改变主函数中的变量的值)。函数声明的方式是:
Type FunctionName(type argument1,type argument2....type argumentn)
{

//函数体

}
type 可以为任意的C语言中的数据类型。也可以为VOID(即无返回值)。

其次,main函数的前面可以为int也可以为void.因为main函数也是函数(废话)。当这个函数执行完毕之后会返回给系统一个值,0表示正确(常)执行。如果你写void的话,编译调试的时候,编译器会自动像系统返回一个值。

第三,在写C++程序的时候一般写:
int main()
{
....
....
return 0;
}

回答2:

-------------------------------------------------------------------------------
改后的代码:
#include

int main ()
{
int a[4];
int i;
//给整型数组赋值
for(i=0;i<4;i++) //我把这里的“;”去掉了
a[i]=i;
//输出数组的值
for(i=0;i<4;i++) //我把这里的“;”去掉了
printf("%d ",a[i]);
//加了返回值
return 0;
}
---------------------------------------------------------------------------
运行结果:
0 1 2 3
-----------------------------------------------------------------------------
对你疑问的解答:
1.
问:我在计算机上执行的结果为 4 但是书上的结果是0 1 2 3 不过我的点那在执行的时候 出现了xxx内存不能为writen 可能计算机出问题了?
答:由于“for(i=0;i<4;i++); ”后有";",于是系统认为你的循环体为空,这条语句的作用就只是让i的值改为4,接着执行“a[i]=i;”,让a[4]=4;而不是像你想象的那样"for(i=0;i<4;i++) a[i]=i; "这个循环
2.
问:第二个for语句有什么用吗?
答:有用,其作用是输出数组的值,通俗的说作用就是让使用这程序的人知道数组的值;你想下,如果没这语句,这个程序运行起来就是个哑巴,什么也不说了;还有就是,你的这第二个for语句犯了和第一个for语句同样的错误,我帮你改了
3.
问:返回值又是什么东西呢?
答:在main()中可以不写返回值,系统会帮你写;你要想了解返回值的作用的话,我写一个函数告诉你:
//输入:a,b
//功能:进行加法运算
//输出:c
int add(int a, int b)
{
int c;
c=a+b;
return c;
}
如果没有“return c;”这句话,这个加法函数将不返回两个数相加的结果。
4.
问:我刚学 什么都不懂 以前接触的 main前面既没有int有没有viod啊
答:在main()函数前没有int或void这个功能只被少数编译器支持,虽然你没写出来,这类编译器还是会帮你写的;我的建议就是在前面加上int,这被所有的C编译器支持
----------------------------------------------------------------------------------------
补充:
如果你还是不大明白,请加我的百度为好友,我再给你讲

回答3:

int main的int表示返回值:操作系统调用程序运行,在程序运行结束后会返回给操作系统一个结果,就是这个返回值。
若没有返回值的话,根据编译器的不同可能会返回一个0值或随机数。与此同时,编译器往往会产生一个警告。
第二个for循环的作用是循环输出数组中的数据。
补充:
返回值是调用一个函数后函数的执行结果,在C语言中一般将其存放在AX(或EAX)寄存器中返回。比如函数:
double add(double a, double b){
return a+b;}
会将a和b的值相加,然后返回给调用它的语句,如:
double m=5;n=6;
double x=add(m,n);
则程序在运行时,会将函数add的返回值赋值给x。

回答4:

你前面学的mian没有int

是缺省的 对于函数来说 前面如果没有类型的话 那么缺省就是int

还有你2个for喜欢后面就加了;号是错的。。

你这样就只是给a[4]赋值但是 数组下标只是a[0]-a[3]所以你这个非法的

但是标准C好像定义可以给数组后面的一个赋值 但是不能引用他

就想你这样a[4]=4 是可以的 但是printf("%d",a[i])就是错的了

改为
for (i=0;i<4;i++)
{
a[i]=i+1;
}
for(i=0;i<4;i++)
{
printf("%d ",a[i]);
}

就不会出错了

回答5:

main也是个函数 有int 代表有必须有返回值 就是末尾的包含return语句
这个返回值是返回个系统的
如果不想返回值就这样写 main() 末尾也不用加return

你运行后输出4 是因为你在 for 语句后面加上啦分号
for 后面是不能加分号的 否则将会当作一条独立的语句啦
应该去掉分号 想下面这样

for(i=0;i<4;i++)
a[i]=i;
for(i=0;i<4;i++)

就会输出 0 1 2 3 啦

第二条 for语句是 循环输出数组的每个元素
for(i=0;i<4;i++)
printf("%d ",a[i]);