C语言中void函数为什么没有返回值也能运算

例题:将大于整数m且紧靠m的k个素数输出.

#include "stdio.h"
void jsValue(int m,int k,int xx[])
{
int i,j,s=0;
for(i=m+1;k>0;i++)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(i==j)
{xx[s++]=i;k--;}
}
}
main()
{int m,n,zz[100];
printf("\n 请输入两个整数:");
scanf("%d%d",&m,&n);
jsValue(m,n,zz);
for(m=0;m<n;m++)
printf("%d",zz[m]);
}
这道题的算法我是明白的,比较迷茫的是C语言明文规定形参不影响实参,
而这道题中既然被调函数是void没有返回值,怎么能影响主调函数main的.
由main显示结果说明被调函数中的数组的数据传递给了主调函数,这和void没返回值严重冲突啊,很迷茫请求高手完美解答一下.汗!经常问问题就剩5分了不好意思...
1楼大哥的意思是不是说m和k还是原来的值,也就是形参不影响实参,但是如果是数组的话在被调函数中改变,主调函数也会改变,也就是说数组是特例,指针我还没看到,内存方面我不太明白,不过数组肯定是占块内存不是占一两个地址我明白.

“形参不影响实参”这句要注意理解,当参数是数组、指针时特别注意。

本例子中函数void jsValue(int m,int k,int xx[])的三个参数是m、k、xx,函数里面无论对这三个数如何改变,函数返回后三个数还是调用前的值,这句话对于m和k很好理解,对于xx而言,其值是指向的某块内存,注重点是指向,这个指向是不会改变的,但是指向的内容被改变了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-07-02
形参不影响实参是对的。

函数调用后m,n,zz的值是不变的,但有点要注意,zz不变并不代表zz所指向的数组不变,zz只是指向数组,你可以理解为一个长整型(指针)
第2个回答  2007-07-02
你把谭老师出的《C程序设计》第三版上的指针看精了,上面的问题就迎刃而解了!!!!!!!

C语言中void函数为什么没有返回值也能运算
本例子中函数void jsValue(int m,int k,int xx[])的三个参数是m、k、xx,函数里面无论对这三个数如何改变,函数返回后三个数还是调用前的值,这句话对于m和k很好理解,对于xx而言,其值是指向的某块内存,注重点是指向,这个指向是不会改变的,但是指向的内容被改变了。

void函数中,没有return语句,为什么还可以调用?
一个数据类型为void的函数中可以没有return语句,那么函数在调用时反回一个不确定的值。所以这一题选择B。计算机编译或运行时,使用某个函数来完成相关命令。对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。

这题为什么有void.就代表无返回值 可为什么最后还会返回到主函数里
没有返回值, 只是返回的时候不带值的意思.并不是不能返回.有返回值, 是返回的时候同时带一个值.void就是返回的时候不带任何值.

c语言求解 指针变量作为函数参数为什么用void 定义而且不用返回值就能...
错误的原因是scanf中是用英文的逗号,而你输入的是中文的逗号,切换输入法就可以了。

C语言问题.VOID既然不返回任何值,它有何用处?
它返回给main的是控制权。C语言的void其实起到的是一个隐藏这个事实的作用,同时也起到一个统一函数声明形式标准的作用。标准嘛,就得统一。这是后来的标准里面才明确提出的,如果一个函数没有返回值,它必须返回void,或者一个函数没有参数,需要把它的参数声明为void。但是刚开始C语言里面是可以直接写...

在C语言中如果定义的类型是void那么一定没有返回值吗?那我再用return还...
用void的话,这个函数就没有返回值,但如果你在函数中单用return;也行,这表示程序执行到这一步就返回,也就是退出这个函数的执行。

c语言中的 void是说没有返回值。。是什么意思。返回值为0呢?
返回0代表成功,也就是正确的意思,程序运行成功。返回-1代表错误。返回NULL也是。void 是空类型,也就是没有返回值,不反悔任何数据。主函数main默认是int类型的,如果你不写return 0,系统会自动给这个程序不上return 0

C语言中为什么写void main( )没有返回值,而int main( )就有返回值?
对于main函数的void和int基本没有差距 因为,main函数值主函数,程序第一个执行的函数,那么他的返回值是给操作系统的,void意思就是空,就是返回值的类型是空的,也就是无返回值,int是整形,那么返回值类型就是整形 你是刚学c的吧,对于子函数,你就;理解这个问题了 ...

c语言中void放在函数保证不返回任何值啥意思 可以举例说一下吗(无...
无返回值不代表无输出。如果一个函数有返回值,那么我们可以进行诸如将函数值赋给一个变量这样的运算,但是无返回值就不可以了

为什么c语言中,数组可以用void调用,既然没有返回值,为什么在主函数中...
void sum(int x,int y){};这种是地址调用,是不会影响到实参的值的,要是按照地址调用(指针调用),是共享同一个存贮空间的,也就是改变的是同一个内存里面的内容,数组名的调用,就是指针调用的一种,int arr(int array[],int n){},你在函数里面改变array[]的值,实参里面也会改变的 ...

相似回答