c语言调用外部函数“在调用函数时,主调函数通过参数向被调函数传递数据。”这句话怎么理解?

提问回答都赚钱
> 问题详情
C语言规定,函数返回值的类型是由A.return语句中的表达式类型所决定B.调用该函数时的主调函数类型
悬赏:0&&答案豆&&&&提问人:匿名网友&&&&提问收益:0.00答案豆&&&&&&
C语言规定,函数返回值的类型是由A.return语句中的表达式类型所决定B.调用该函数时的主调函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定请帮忙给出正确答案和分析,谢谢!
发布时间:&&截止时间:
网友回答&(共0条)
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&10.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&2.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&8.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&8.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
你可能喜欢的
[] [] [] [] [] [] [] [] [] [] [] []
请先输入下方的验证码查看最佳答案数组名作为函数参数的,应该在主调函数和被调用函数分别定义数组,不能只在一方定义_百度知道
数组名作为函数参数的,应该在主调函数和被调用函数分别定义数组,不能只在一方定义
这句话是什么意思?????能否举个例子???
不知道你是不是学到了指针,如果没有学到等学到了就明白了。但,我想你应该知道数组名的含义:数组名表示的是这个数组所在内存的首地址。任何一个变量都有自己的家(内存),谁家都有门牌号(地址值),一般变量的地址需要用&来取其地址,而数组变量不同,数组名就表示这个地址。数组名作为函数参数,就是将数组的首地址传递到子函数中去。能理解这些就好了,至于你那句话,不知道是哪位高人又说多了,呵呵,估计是怕初学者搞不懂形参和实参都要说明清楚吧,其实就是废话。借用楼上的代码:void func(int a[],int n) //函数形参为数组{for( i=0;i&n;i++ )printf(&a[%d]=%d\n& , i , a[i] );}func函数也可以这样写void
func1(int *p,int n)//函数形参为指针{for( i=0;i&n;i++ )printf(&p[%d]=%d\n& , i , *(p+i) );}void main(){int a[5]={1,2,3};func(a,3); //数组名作参数 ,这是主调用函数func1(a,3);}
来自团队:
其他类似问题
为您推荐:
其他1条回答
数组做参数是这么用的,举个例子:void func(int a[]){……;}void main(){int a[5]={1,2,3};func(a);}
那 分别定义数组...在这个是什么意思
我不是太清楚这句话什么意思,我只知道我这种写法肯定没错的,可能指的是参数里的定义吧
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁提问回答都赚钱
> 问题详情
在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A.地址传递 B.单向值传递C
悬赏:0&&答案豆&&&&提问人:匿名网友&&&&提问收益:0.00答案豆&&&&&&
在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A.地址传递 B.单向值传递C.由实参传形参,再由形参传实参 D.传递方式由用户指定
发布时间:&&截止时间:
网友回答&(共0条)
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&10.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&2.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&8.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&8.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
你可能喜欢的
[] [] [] [] [] [] [] [] [] [] [] []
请先输入下方的验证码查看最佳答案C语言被调函数与主调函数数值问题_百度知道
C语言被调函数与主调函数数值问题
有一个题是交换a,b的值输出,被调函数是swap(int a,int b){
b=t;}老师说不对,被调函数改变的是它自己的值,主函数的还是不变,要改地址才行(这个我明白)。可是后来又有一个例子,主函数里定义了a[10]的十个值,但是被调函数里又重新定义了a[0]等于别的数,然后输出的时候a[0]就成了被调函数里定义的那个。这是为什么啊?PS:因为怕没有我想要的的答案,就先少给点分,到时候可以在追加的。
提问者采纳
参数有值传递和引用传递两种(你用的都是值传递) 值传递的意思是将你的参数的数值传递到调用的函数中(你的参数的值被复制了一份给了被调用的函数),所以才函数中怎么改变,都不会对原数值产生影响(打个比方,你抄袭了一篇文章,然后自己在那里改啊改的,但是原来的文章是没有动的) 后边定义的a[10]传递过去了为什么改了呢,这个是因为他是个数组,传递进去的不是数值,而是个指针,这个时候,在函数中,你修改指针的值,外边是不会有影响的,但是,你修改的是指针指向的地址的值,外边的指针指向的地址里的数据被改了,所以外边的数据就更改了(就相当于你家里有个电视,你家里有个遥控,你弄了个一模一样的遥控,你把你的遥控甩坏了,家里的遥控还是不会有影响,但是你用遥控把电视的频道改了,这就受影响了)
提问者评价
其他类似问题
# include &stdio.h&void f(int a[])//参数是数组名a,a其实是个地址,即指针{ a[0] = 555;//等价于* (a + 0) = 555}int main(void){ int a[5] = {1,2,3,4,5}; f(a); printf(&%d\n&,a[0]); return 0;}/*输出结果:------------------------555Press any key to continue------------------------------*/
来自团队:
为您推荐:
其他9条回答
swap(int *a,int *b){
t=*a;*a=*b;*b=t;}main函数里面调用的时候写出swap(&a,&b);这样就好了
不是啦~我主要是想问为什么第二个例子被调函数能改变主函数的值~
你的第一个函数只是改变了形参的值,并没有改变真实的值,通过指针和取址,可以达到实参的交换。如果你将那两个函数都写在main函数中可以达到交换的效果。
然后输出的时候a[0]就成了被调函数里定义的那个
因为你在主函数定义的数组传递给被调函数,本身就是把地址传递给被调函数。而你上面那个代码
在被调函数里面确实交换了2个的值,但是返回给调用函数的时候,值没被交换。理由很简单,你只是值赋予了被调函数的参数,里面的参数与你实际的传递实参没有间接关系。
因为数组名在作为函数参数进行传递时,实际传递的是数组的首地址。如下:void dotest(int test2[5]){ test2[0]=6;}main(){ int test[5]={1,2,3,4,5}; dotest(test);//传进去的是test[5]的首地址 printf(&%d\7\n&,test[0]);}
因为c语言中的数组是以首地址为始的一片连续空间 所以你对数组中某个数赋值的实质就是对处在一个特定地址空间的变量赋值 当然它在子函数与原函数之间都是可以被改编的 但普通变量在子函数中再次出现时 它不对应与原来的地址 故而改变之后没有影响 c的指针 或者说地址的操作 是它最卓越的地方 好好领悟吧~ 望采纳~
把那个例子的代码拿来看看,我对你描述的那个例子不清楚。拜托了。
在被调用函数中利用指针指向主函数的数组a[0]的地址,并重新定义其值,回到主函数之后,a[0]在主函数中的值被重新定义。
函数的传参问题。楼主所说的第二种情况,参数为数组时,其实传入被调函数中的是数组的首地址,a[0] = 3; 改变了a地址中存放的数据本身,即主函数中定义的数组a中的第一个元素。介意楼主看一下函数的传参的相关知识
你写的这程序是对的!你上面的这个只是子涵数!你的问题出现在你没给子函数一个宏定义!所以主函数运行起来不能调用你的子函数!
因为第二个例子传的参数是数组a, 是地址,不是值。a = &(a[0])
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在发生函数调用时,被调函数中的参数可以是简单变量,也可以是数组名,当采用数组名作为参数时其数据传递_百度知道
在发生函数调用时,被调函数中的参数可以是简单变量,也可以是数组名,当采用数组名作为参数时其数据传递
在发生函数调用时,被调函数中的参数可以是简单变量,也可以是数组名,当采用数组名作为参数时其数据传递方式为单向值传递。这是C语言里的一道判断题。求解。并解释一下为什么。。谢谢叻~
提问者采纳
错误。采用数组名时传递的是指针,被调函数获得参数的内存地址并共享内存,所以并非单向传递。可能表达不太好哈。
提问者评价
太给力了,你的回答完美的解决了我的问题!
其他类似问题
为您推荐:
函数调用的相关知识
其他1条回答
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 c语言函数调用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信