求c语言 返回结构体指针帝,如何用指针在一个函数中返回两个以上的值

如题如何解决
static&UINT&Keyhsq(VOID)&&&/&/&&VOID改成int&*&
int&i,&j,&k,&a[5],rto[50],&temp1,&temp2,&m,&t;
srand((unsigned)time(NULL));
t&=&rand()%3&+&1;
for(k&=&0;&k&&&5;&k++)
loop:&temp1&=&rto[k]&=&rand()%50;
for(m&=&0;&m&&&k;&m++)
if(temp1&==&rto[m])
if(temp1&==&0)
for(i&=&0;&i&&&5;&i++)
loop1:temp2&=&a[i]&=&rand()%6;
for(j&=&0;&j&&&i;&j++)
if(temp2&==&a[j])&
goto&loop1;
if(temp2&==&0)
goto&loop1;
STDCALL&VOID&KeyOuthsq(VOID)
&&&&&&&&&&&&&&&&&&&U8&*NoiOt;
u8&NoiOtIoNumC
NoiOtIoNumChoose&=&Keyhsq(t);
NoiOt&=&Keyhsq(a[i]);
uTry&=&Keyhsq();
RtOChoose&=&Keyhsq(rto[k]);
上面keyhsq()函数中的a[&i&]、rto[&k&]、t;&要如何经过指针,或其他方式实现在keyouthsq()函数上调用。或者在全局变量中定义之后如何实现keyhsq()函数对其赋值运算,之后再keyouthsq()函数中调用。
(PS:初学C,还请各路大神多多指点)
回复讨论(解决方案)
你定义为全局变量&,在任何一个子函数中都可以使用了。
函数内部的局部变量,在函数调用返回时,就已经无效了,返回指针当然可以访问,但是无意义了!
原因:x86下,每次函数调用,都要在栈上生成一个新的栈帧,局部变量就在此栈帧中进行分配,当函数返回时,此栈帧就要撤销。
假设A&call&B,&从B中返回一个局部变量的指针p,然后A&call&C,那么p可能就指向了函数C的局部变量,因为B返回后再调C,栈帧就重新分配给C了
全局变量吧..
既然是局部变量,&那就不要想了,&&这是危险的,&结果是不可预知的.
可以是局部静态变量,全局变量等等
同一文件可以static,否则只能全局,这种变量在小程序无所谓,程序大了就要小心
静态局部变量作用域受到限制,&搞一个全局变量。&
为什么到处充满了goto
这么一个程序各种goto,真是醉了,要么加static了return,要么全局变量
使用全局变量不会麻烦死人的。
不使用全局变量也不会爽死人的。
既然是局部变量,&那就不要想了,&&这是危险的,&结果是不可预知的.
可以是局部静态变量,全局变量等等
!!!要是定义了全局变量,要怎么实现在上一个函数里运算,下一个函数里调用上一个函数运算的值。!!!
使用全局变量不会麻烦死人的。
不使用全局变量也不会爽死人的。
要是定义了全局变量,要怎么实现在上一个函数里运算,下一个函数里调用上一个函数运算的值呢?
在外部定义,然后作为这两个函数的参数。
如果要使用的变量比较多,建议封装起来做成一个struct,然后定义一个全局的结构体实例,至于是不是static是你的需求而定,这样操作起来就比较方便了。
使用全局变量不会麻烦死人的。
不使用全局变量也不会爽死人的。
要是定义了全局变量,要怎么实现在上一个函数里运算,下一个函数里调用上一个函数运算的值呢?
#include&&stdio.h&
void&fun1()&{
void&fun2()&{
int&main()&{
&printf(&%d\n&,g_var);
&return&0;
!!!要是定义了全局变量,要怎么实现在上一个函数里运算,下一个函数里调用上一个函数运算的值。!!!
赵老师已经给了这个问题和答案了.
全局变量即是全局的,&&你的上一个函数可以把运算结果保存到这个全局变量中,&下一个函数就可以使用这个全局变量得到上一个函数运算的值.
我把赵老师的代码给你注释下
#include&&stdio.h&
int&g_&&&//全局变量&定义
void&fun1()&{
&gvar++;&&&//fun1中计算修改了全局变量,&相当于你计算了一个值,&保存在全局变量中了.
void&fun2()&{
&gvar*=2;&&//第二个函数中直接使用这个全局变量,&它不但使用这上一个函数的计算结果,&自己也会计算并保存一个值到全局变量中
int&main()&{
&fun1();&&//执行完这个,&g_var&=&2;&&内部自加1了
&fun2();&&//执行完这个函数&&g_var&=&4;&&&&内部使用上个函数计算结果2,&然后2*2=4
&printf(&%d\n&,g_var);&&//这里会输出4
&return&0;
函数里用局部指针,&局部指针返回
感谢两位的指导,明白了,不过我采用了#15楼的方法。
感谢两位的指导,明白了,不过我采用了#15楼的方法。
使用全局变量不会麻烦死人的。
不使用全局变量也不会爽死人的。
在今后的峥嵘岁月中,用心体会我这两句话。
请牢记:源代码本身的书写是否结构化或面向对象或符合设计模式或敏捷…并不重要,重要的是你是否使用结构化或面向对象或符合设计模式或敏捷…的方法命名标识符、阅读、修改、检查、测试源代码。
意思是你程序结构看上去再合理,再简洁,也不一定比看上去一团乱麻的程序结构在运行或修改时更不易出错,更方便修改,出错了更容易找到哪里出错和具体出错的原因,更容易改正错误。
图书馆(对图书的分类够结构化了吧)
搜索引擎(可看作是扁平化任何结构数据,仅支持全文检索)
哪个处理信息更方便、更高效。
与其费劲去重构代码让其看上去更简洁、更合理
不如费劲学习grep、sed、awk、……这类全文搜索和批处理编辑的工具。
结构越复杂,越难修改,越难除错。
有时(甚至大多数时候),看上去越合理、越简洁的代码,运行起来性能越差,出错时查找原因越难,找到出错原因后改正越费劲。
程序员要做的不是尽力避免错误,而是聚焦在快速发现并改正错误。真正以快速方式轻易解决错误,“快速的失败”远胜过“预防错误”。Fred&GeorgeC语言中函数调用怎么返回两个值-c语言中调用一个函数,被调用的函数只能有一个返回值???_经验分享网
你正在浏览: &>&
C语言中函数调用怎么返回两个值
C语言中函数调用怎么返回两个值
各位在主函数中调用了一个函数,我希望能有两个返回值,在调用函数中怎么去return?好像默认的是只能返回一个值吧
这两种方法就相当于返回多个值了,改变指针指向的内容,这样在定义变量是就给它分配了内存空间,可以将变量定义为static(静态的),当函数生命周期结束时return 只能同时返回一个值,变量的值任然存在,要想返回多个值。也可以用指针变量作为函数的形参,也能达到改变变量值的目的,其他函数也可以使用它的值
} for(i=0,b[N][M],j),int b[N][M]){ int i,j;a[%d][%d]=&n&%d &M;;%d &i&\j++){ b[j][i]=a[i][j];,b[i][j]);N,&a[i][j]); } printf(&);i&lt,j;;i&j&M;i++){ for(j=0:矩阵行列转换; scanf(& } } } void main(){
for(i=0,i; for(i=0;j++){ printf(&i& } printf(&N;N;M;n&;j& #define M 3 #define N 2 void swap(int a[M][N];N;i++){ for(j=0;i++){ for(j=0利用传入指针参数做返回值例子,b);j&j++){ printf(&quot,a[i][j]);\j++){ printf(&i++){ for(j=0;j& } } swap(a;M;%d&quot.h& int a[M][N]; for(i=0,其中b[M][N]就相当于是函数返回的数组#include &)
在传递给函数的变量中返回。return应该返回的是运行状态,而不是执行之后的运行结果。这是一个普遍的误解……
在C语言中,函数只能返回一个值,要返回两个值,可以改换思路,通过其它方式做到。1 建立数组,返回指针。在要返回的两个值类型相同时,可以用创建数组的方式,将要返回的值存在数组中,并返回数组首地址,这样就可以实现返回两个值的效果。需要注意的是,要返回数组首地址,那么返回的值不可以是局部变量,有如下几种是可以的:a) 使用静态局部变量存储,并返回地址;b) 使用全局变量存储,返回地址;c) 函数中动态分配内存,并返回申请到的地址,此种方法需要注意,在使用后需要释放;d) 在参数中传入数组地址,并返回。即返回的实际上是主调函数中的变量地址。2 建立结构体,返回结构体变量。将需要返回的值,写成结构体形式,并返回结构体变量,这样可以实现一个返回值中含有多组数据。3 当数据规模较小时,可以采用将小规模数据合并为大规模数据的方式,进行返回。比如,需要返回两个char型数据时,可以通过返回一个short数据,高地位分别存储各自的值。除以上方法外,还可以不使用返回值的方式,而是通过函数参数传值,或者全局变量传值等方式,将要返回的值回传给主调函数。
c语言中怎么调用函数?谢谢……
给你个例子: #include&stdio.h& //写好加法,以便调用 int sum(int x...如何在C语言中调用汇编函数……
C程序调用汇编程序 汇编程序的设计要遵守ATPCS(ARM—Thumb Procedure Call...C语言中函数调用与返回值的关系是什么……
函数调用的概念: 计算机编译或运行时,使用某个函数来完成相关命令。对无参函数调用时则无实际参数表。实...C语言中函数调用是什么意思,调用有什么作用?……
如果在设计c语言程序中,反复要用到一个组合计算的程序段,比如: void main() { int ...在c语言中主函数如何调用子函数……
#include&stdio.h&#include&stdlib.h&inttest1(inta){...c语言中函数的调用有几种方式……
在C语言中,可以用以下几种方式调用函数: 1. 函数表达式: 2. 函数语句: 3. 函数实参; 函...C语言函数调用的三种方式并分别举一例。……
按函数调用在程序中出现的位置,有三种函数调用方式 1.表达式方式 函数调用出现在一个表达式中,这种表...C语言里子函数可以调用子函数吗?……
可以的。 C语言规定,任意函数均可以嵌套调用。所以子函数可以调用其它子函数,也可以调用自身。 如 i...C语言函数的定义和函数的调用哪个可以嵌套……
1、C语言函数的定义不能嵌套,函数的调用可以嵌套。 2、C语言中函数的定义都是相互平行、相互独立的,...C语言中,是否可以调用其它文件的函数?……
C语言可以在程序中调用其他文件中的函数。在大型的程序软件开发中,为了代码的可读性,或多人同时进行代码...
你可能感兴趣的内容?> c语言中用一个函数指针作为另一个函数的参数,该怎么解决
c语言中用一个函数指针作为另一个函数的参数,该怎么解决
jjkk110 & &
发布时间: & &
浏览:5 & &
回复:2 & &
悬赏:0.0希赛币
c语言中用一个函数指针作为另一个函数的参数#include&stdio.h&void main(){ int max(int x,int y); int min(int x,int y); int method(int *p,int x,int y); int a,b,c; scanf(&%d%d&,a,b); int (*p)(int x,int y); p = int (*q)(int x,int y); q = c = method(max,a,b); printf(&%d&,c);}int method(int *p,int x,int y){ (*p)(x,y);}int max(int x,int y){
z = } else {
z = } return (z);}int min(int x,int y){
z = } else {
z = } return (z);}错在哪里,麻烦大家给指出来,或者是根本就没有这种用法啊???
#include&stdio.h&void main(){ int max(int x,int y); int min(int x,int y); int method(int (*p)(int,int),int x,int y); int (*p)(int x,int y); int (*q)(int x,int y);
int a,b,c; p=
q= scanf(&%d%d&,&a,&b); c = method(max,a,b); printf(&%d&,c);}int method(int (*p)(int,int),int x,int y){
z=(*p)(x,y); return (z);}int max(int x,int y){
z = } else {
z = }return (z);}int min(int x,int y){
z = } else {
z = } return (z);}这样改一下就行了。
jjl2050 & &
09:02:02 & &
& & (3)(1)引用
楼上的是正确的答案。楼主的int method(int *p,int x,int y)中p只是一个int型的指针,而不是一个函数指针。在方法中*p当然也就是个int型的值,所以那样调用就出问题了。int method(int (*p)(int,int),int x,int y)中的p才是一个函数指针,它指向的函数有两个int型参数并且返回一个int类型的值。也可以这样,先定义一个函数指针,如pfunc,指向有两个int型参数并且返回一个int类型的值的函数typedef int (*pfunc)(int,int);//然后直接用pfunc来作变量类型int method(pfunc p,int x,int y){}qigyczxx & &
09:02:02 & &
& & (1)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&

我要回帖

更多关于 c语言结构体指针 的文章

 

随机推荐