智能车制作

标题: 原创几个小程序(whut_wj) [打印本页]

作者: whut_wj    时间: 2010-6-30 00:17
标题: 原创几个小程序(whut_wj)
WJ看了很多同学写的程序,也指导过一些同学。程序是纯C的,但是并没有把C的优势发挥出来。
比如:怎么用一个函数返回多个值?下面,我来写几个例子,希望能给大家启发。
ex1:
////////////////////////////////////////////////////
//利用结构体返回多个计算之后的值
//下例一个函数返回加法和减法后的值
// whut_wj

///////////////////////////////////////////////////
typedef struct _DATA
{
int a;
int b;
}DATATYPE;
DATATYPE calculate(int x1,int x2)
{
   DATATYPE staticdata;
   staticdata.a=x1+x2;
   staticdata.b=x1-x2;
   return staticdata;
   
}
int main()
{
DATATYPE data=calculate(7,8);
    printf("%d %d",data.a,data.b);
return 0;
}
ex2
/////////////////////////////////
///方法2:利用指针传递形参,并在Calculate函数里计算和与差
///计算结果通过形参又返回
///这种方法是一种常见的指针用法
///认真体会!!!!!!!!!

////whut_wj
/////////////////////////////////


void Calculate(int *a,int *b)
{
int  temp1=*a;
int  temp2=*b;
*a=temp1+temp2;
*b=temp1-temp2;
}

int main(int argc, char* argv[])
{  
int x1=7;
int x2=8;
printf("计算前x1为%d x2为%d\r\n",x1,x2);
Calculate(&x1,&x2);
    printf("计算后和为%d 差为%d\r\n",x1,x2);
return 0;
}

ex3
///////////////////////////////////
//利用指针函数返回计算后的值
//这是一种高级应用,必须常握!!
//认真体会new 和指针+1的意义!!
//whut_wj
/////////////////////////////////////



int * Calculat(int a,int b)
{
   int *data=new int [2] ; //这句话必须new 而不能直接 int data[2] 否则应把 int data[2]放在全局变量中
  // int data[2];  如果把这句话代替上面的int *data=new int [2] 则不行,为什么,想想!
   data[0]=a+b;
   data[1]=a-b;
   return data;
}
int main()
{
    int a=7;int b=8;
int * result;
    result=Calculat(7,8);
printf("和为%d,差为%d",*result,*(result+1));
return 0;
}
ex4
///////////////////////////////////
//利用引用返回值

//和指针区别开来,必须常握!!
//whut_wj
/////////////////////////////////////

void  Calculat(int a,int b,int &add,int &abs)
{
   add=a+b;
   abs=a-b;
  }
int main(int argc, char* argv[])
{
    int a=7;int b=8;int add,int abs;
printf("计算前:a=%d b=%d\r\n",a,b);
    Calculat(7,8,add,abs);
printf("和为%d,差为%d\r\n",add,abs);
return 0;
}
作者: cat888    时间: 2010-6-30 07:58
ex3 会内存泄露吧?
作者: kingcau    时间: 2010-6-30 10:11
lz的理解真的很高啊,实在是需要学习。
作者: chihua    时间: 2010-6-30 11:06
好久不见你发帖了我想问一下WJ大哥,你的淘宝小店不开了吗??我们找个五伏的CCD摄像头呀?其他地方好像找不到的。
作者: sillysg5110    时间: 2012-1-7 00:31
太强了,我真正学0v6620,如果有什么问题,可以发帖问你?或者我能有您的QQ或邮箱?
作者: sillysg5110    时间: 2012-1-7 00:33
哦   不好意思   我刚刚看到邮箱了
作者: 天翊    时间: 2014-8-4 22:55

作者: 鬼柳くにぉ樽    时间: 2014-11-14 21:16
四年之后的师弟膜拜学长。略表疑问:new、引用是C++中的概念,这还算纯C的程序吗?
作者: 文艺小青年    时间: 2014-11-18 19:43





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2