智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5230|回复: 8
打印 上一主题 下一主题

原创几个小程序(whut_wj)

[复制链接]

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
跳转到指定楼层
1#
发表于 2010-6-30 00:17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
}

9

主题

123

帖子

0

精华

常驻嘉宾

猫爸爸

Rank: 8Rank: 8

积分
3602
威望
1062
贡献
1380
兑换币
318
注册时间
2009-12-11
在线时间
580 小时
2#
发表于 2010-6-30 07:58:58 | 只看该作者
ex3 会内存泄露吧?
回复 支持 反对

使用道具 举报

14

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2486
威望
325
贡献
2065
兑换币
6
注册时间
2009-9-28
在线时间
48 小时
3#
发表于 2010-6-30 10:11:07 | 只看该作者
lz的理解真的很高啊,实在是需要学习。
回复 支持 反对

使用道具 举报

11

主题

102

帖子

0

精华

高级会员

Rank: 4

积分
870
威望
309
贡献
303
兑换币
14
注册时间
2009-10-7
在线时间
129 小时
4#
发表于 2010-6-30 11:06:24 | 只看该作者
好久不见你发帖了我想问一下WJ大哥,你的淘宝小店不开了吗??我们找个五伏的CCD摄像头呀?其他地方好像找不到的。
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
364
QQ
威望
288
贡献
50
兑换币
0
注册时间
2011-7-16
在线时间
13 小时
5#
发表于 2012-1-7 00:31:04 | 只看该作者
太强了,我真正学0v6620,如果有什么问题,可以发帖问你?或者我能有您的QQ或邮箱?
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
364
QQ
威望
288
贡献
50
兑换币
0
注册时间
2011-7-16
在线时间
13 小时
6#
发表于 2012-1-7 00:33:48 | 只看该作者
哦   不好意思   我刚刚看到邮箱了
回复 支持 反对

使用道具 举报

56

主题

1240

帖子

4

精华

跨届大侠

https://github.com/howborn

Rank: 10Rank: 10Rank: 10

积分
7954

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章论坛骨干奖章

QQ
威望
3025
贡献
1997
兑换币
2249
注册时间
2013-2-26
在线时间
1466 小时
7#
发表于 2014-8-4 22:55:30 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
160
威望
84
贡献
56
兑换币
45
注册时间
2014-8-31
在线时间
10 小时
8#
发表于 2014-11-14 21:16:35 | 只看该作者
四年之后的师弟膜拜学长。略表疑问:new、引用是C++中的概念,这还算纯C的程序吗?
回复 支持 反对

使用道具 举报

6

主题

117

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1330
威望
651
贡献
419
兑换币
409
注册时间
2013-9-9
在线时间
130 小时
毕业学校
中国旅游大学
9#
发表于 2014-11-18 19:43:52 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 00:20 , Processed in 0.088590 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表