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

例题:将大于整数m且紧靠m的k个素数输出.#include"stdio.h"voidjsValue(intm,intk,intxx[]){inti,j,s=0;for(i... 例题:将大于整数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还是原来的值,也就是形参不影响实参,但是如果是数组的话在被调函数中改变,主调函数也会改变,也就是说数组是特例,指针我还没看到,内存方面我不太明白,不过数组肯定是占块内存不是占一两个地址我明白.
展开
 我来答
阳光上的桥
2007-07-02 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65782
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
“形参不影响实参”这句要注意理解,当参数是数组、指针时特别注意。

本例子中函数void jsValue(int m,int k,int xx[])的三个参数是m、k、xx,函数里面无论对这三个数如何改变,函数返回后三个数还是调用前的值,这句话对于m和k很好理解,对于xx而言,其值是指向的某块内存,注重点是指向,这个指向是不会改变的,但是指向的内容被改变了。
kingstarer
2007-07-02 · TA获得超过584个赞
知道小有建树答主
回答量:516
采纳率:0%
帮助的人:516万
展开全部
形参不影响实参是对的。

函数调用后m,n,zz的值是不变的,但有点要注意,zz不变并不代表zz所指向的数组不变,zz只是指向数组,你可以理解为一个长整型(指针)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
同进退5qgj
2007-07-02 · 超过30用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:0
展开全部
你把谭老师出的《C程序设计》第三版上的指针看精了,上面的问题就迎刃而解了!!!!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式