Chinaunix首页 | 论坛 | 博客
  • 博客访问: 105060
  • 博文数量: 25
  • 博客积分: 514
  • 博客等级: 下士
  • 技术积分: 690
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-07 01:22
个人简介

漂泊海外的游子

文章分类

全部博文(25)

文章存档

2015年(2)

2013年(1)

2012年(22)

分类: C/C++

2012-09-05 21:14:05

问题

这个其实大家都知道,我也知道,问题是我有时候就在这个地方跌倒。调用函数最必须注意的是就是argument的数量和类型,传址或是传值。

函数argument的数量,类型与你的提供的不一致,99%都是问题的。

这个我知道,昨天我写程序的时候又碰到了类似的问题,出错提示:segment dumps。这个错误其实我的变量有问题。

可是我一直没有想通为什么那个变量有什么问题。知道今天早上,我恍然大悟,还是出在调用函数上。

这个问题很简单,我使用的是我老板的函数库,当前位置,这个变量处于数据流的末端,我将这个变量给了一个函数,然后返回这个变量。
但是我需要原先没有处理的数据,进行下一步的操作。所以我想当然地将返回值给了一个新的变量,问题来了。

==================================================
解决方案

程序就像流水线,数据就像产品。

我把流程的数据给了一个函数(相当于半成品给一个加工车间),并处理。那么得到的仍然是原先的东西,只不加工了下。这不符合我的要求,我的是一个没有处理的,和一个处理过的。

这个问题有很多种解决的办法

1. 给函数之前,复制这个数据给一个新的变量。
这也要看具体情况,我的变量拥有一个复杂的数据结构,导致失败,也许我没有看懂这个类相应的操作符。

2. 修改函数
在函数里,新建一个变量,将处理好的结果给它。原先的数据就不会被修改。返回这个新建的变量,即可。

我采用了第二种方法,也许还有其他的方法,我不知道而已。

====================================================
感想

虽说,我早先就明白,程序就像工厂,函数就像车间,数据就像原材料,我们要的是产品。

可是问题往往会这么多,几乎不可能一次编译就通过。

总会出现类似思路的问题,函数问题,衔接问题,类型匹配问题等等。就像原材料被加工成一个劣质品甚至加工的中途就不知所踪。

所以,只有多想,多实践才是王道。就像一个道理,大家都明白,不一定所有的人悟到它的真谛。
阅读(2478) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~