当前位置:首页 » 编程语言 » c语言输出结果主函数的值不变
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言输出结果主函数的值不变

发布时间: 2022-04-26 10:47:55

c语言题为什么运行后输出结果不变啊

你的疑问应该是在f()函数中为什么明明修改了结构体的值,但是实际的结构体确没有改变。
这是由于c语言中的方法参数传递分为传值引用(形参,在方法中修改的值只在方法中有效)和指针引用(实参,可以直接修改实际结构体或参数的值),而你问题中的代码属于形参传递,所以在main函数中打印的结果没有变化。希望对你有用!

Ⅱ C语言中,调用函数时,实参在函数里改变了值,那在主函数里是原来的值还是改变了的值呢

INT是值类型 变量存储的是真实的值 传参时在目标函数内再用一段内存把值复制过去,改的只是change函数里的变量a main函数里的没变

指针是引用类型 变量存储的只是一个内存地址 传过去的也是内存地址,修改的是根据那个地址 找到的真实值

Ⅲ C语言:这道题在子函数输出的是3,2。那主函数输出的值没有变,是不是因为fun函数的类型是void

不是的,是因为你的函数的参数是传值的方式传输的。
也就是理解为,main函数和fun函数是不同的函数,里面的值,就算是相同名字的变量,但实际上是不同的变量,因为他们所在的函数不同。所以main里的xy与fun里的,相互独立。
只是在在fun函数调用的时候,将main中xy的值赋给了fun中的xy;改变fun中的xy,main中的xy并不会改变!

Ⅳ C语言:同样类型的两道题,结果是主函数的值都没有变,我知道可以利用指针的方法进行地址传递,但要是单

当然还是不行,首先C里函数不能返回两个值,除非你把它做成个结构体,那也是只return回一个变量而已

Ⅳ C语言问题!为什么这三道题输出结果没有变,请详细解释下,指针不太懂。谢谢!ps题中大小写有错,不用

第一题:fun(a,5),则p指向数组a的首地址,然而在fun函数里面的for循环,p=b,则指向b数组的首地址,跟a无关了。其次,printf("%s\n",A); A哪里来的?C语言是区分大小写的。

第二题与第三题:*s=a,s指向a数组首地址,然后在fun函数里,s又指向别的地址去了,所以函数里的操作与main里的s 无关,main里的s还是指向a数组首地址,所以*s的值还是a数据的第一个。

这就是实参和形参,不同函数你想象为不同的空间。在main函数把值传给fun函数,也就是值复制过去一个,怎么变都不关main函数里面的事,但是fun函数是用指针,就是main函数变量的地址的,就能影响到main函数的变量了。然而fun函数的指针又指向别处了,就又跟main无关了!

Ⅵ C语言,为何输出C的内容不变,调用里不是把b都赋值给a了么

f(c)的参数是值传递,不会改变c的值,调用f()函数的时候相当于是把c的内容复制了一份作为参数a传递给了f()函数,对c本身的内容并不会产生影响。

Ⅶ C语言,指针,函数 为什么在函数中改变了指针主函数依旧不变 书上给的看不是太懂

C++可以通过异常处理的throw和catch来实现从子函数的子函数直接返回主函数,汇编语言可以用jmp指令跳转实现这个需求。C语言主要靠函数调用和return在函数之间切换,很难做到在多层调用中直接返回主函数。虽然goto语句可以无条件跳转,但是必须在同一个函数中使用。因此解决的方法也是用一个特殊的值作为需要返回的标志,然后在两层调用函数中都遇到该值就返回,但是这个方法也有两个前提:1)你的两个子函数都是由返回值的函数2)你选择的特殊值和函数正常的返回的取值不会冲突,不会引起二义性。因此建议你的这个问题还是用C++ 的异常去解决比较好。

Ⅷ C语言 第八题函数值为什么不变呀

你没有理解输出的是什么

输出的*p,*q,指的是*p,*q对应内存地址的值,而不是p,q本身的值

虽然p,q在main过后互换了值,但对应地址指向的值是不变的。

也就是说其实main过后*p=j,*q=i

明白了吗?

我特意跑了下这个程序,顺便输出了*p,*q对应的地址供你加强理解。

Ⅸ c语言在子函数中给形参赋值,为什么主函数中的形参值却不变

简单理解为main给f1传参数时,把a、b、c复制了一份。f1里的abc与main里的abc虽然长得一样,但只是克隆体

Ⅹ C语言中,为什么有的输出结果主函数的值不变啊,我有点迷

看来你的C语言功底要加强一下了,说笑的!!!
在函数里调用另一个函数fun,要使用指针的方式才能改变它的值,如fun(int *x, int *y);
如果不使用指针而直接值传递调用,那么在调用完fun函数后,该函数做占用的内存、堆栈都会被释放,即a、b的值还是以前的,不会被改变;
使用指针的话,它会直接修改指针所指向的内存的值(const除外),从而达到交换的目的。