智能车制作
标题:
原创几个小程序(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