指针变量的使用场合及常见的使用方法
一、处理简单变量(这里的简单变量指的是非下标变量)
1、函数定义简单变量,在本函数内处理该变量
(1) 直接访问(不用指针变量)
void f1()
{int a;
a = 5; //效率高
……
}
(2) 间接访问(用指针变量)
void f1()
{int a, *p;
p = &a;
*p = 5; //效率低
……
}
由于间接访问效率低,故一般不采用这种方法。
2、函数f1()定义简单变量,在本函数之外(另一函数f2()中)处理该变量
(1) 值传递(不用指针变量)
void f1()
{void f2(int, int);
int a = 5, b = 3;
f2(a,b);
……
}
void f2(int x, int y)
{
printf(“sum=%d\n”, x+y);
}
如果不希望被调函数f2()改变a、b的值,只允许它使用副本,通常用这种传递——值传递。
(2) 地址传递(用指针变量)
void f1()
{void f2(int*);
int a = 5;
f2(&a);
printf(“a = %d\n”, a);
}
void f2(int *p) //注意:是在被调函数中使用指针变量
{
*p = 1;
}
这种情况下,函数f2()中使用的*p就是f1()中的a(正本),可以通过p间接访问a并且可以改变a的值。
如果希望被调函数f2()改变a的值,只能用这种传递——地址传递。
二、处理下标变量
1、函数f1()定义数组,在本函数中访问下标变量
(1)直接访问(不用指针变量)
void f1()
{int a[10] = {3,1,5,8,7,9,6,2,0,4}, i;
for(i = 0; i <= 9; i++)
printf(“%3d”, a[i]); //用数组名访问——直接访问
printf(“\n”);
}
(2)间接访问(用指针变量)
void f1()
{int a[10] = {3,1,5,8,7,9,6,2,0,4}, i;
int *p;
for(p = 0; i <= a + 9; p++)
printf(“%3d”, *p); //用指针变量访问——间接访问
printf(“\n”);
}
这种方法比用数组名访问更高效,故也经常采用这种方法。
注意:
只有访问数组中多个连续的下标变量时,才用这种间接的方法,因为它高效。若只访问其中一个下标变量,则用间接访问比直接访问要慢。如:
直接访问:
a[5] = 1; //效率高
间接访问:
p = a;
*(p+5) = 1; //效率低
2、函数f1()定义数组,在本函数之外(另一函数f2()中)访问下标变量
(1) 值传递(不用指针变量)
f2()函数需要用几个数据,则f1()就应该传递几个数据,若所有数据都用,则需要传递所有数据。
void f1()
{void f2(int,int,……int); //共10个虚参
int a[10] = {3,1,5,8,7,9,6,2,0,4}
f2(a[0],a[1],a[2],…… a[9]); //共10个实参
}
void f2(int a,int b,int c,int d,……int j) //共10个虚参
{int sum;
sum = a + b + c + d + e + f + g + h + i + j;
printf(“sum = %d\n”, sum);
}
显然,这不是个好办法,因为这种设计使函数需要传递的参数太多,太麻烦。
所以,尽管这种值传递可以有效保护f1()中数组的数据,但仍然不被程序员所采用。
(2)地址传递(用指针变量)
void f1()
{void f2(int*);
int a[10] = {3,1,5,8,7,9,6,2,0,4}
f2(a); //数组名a作参数,而不是a[10],更不是int a[10]
}
void f2(int *p) //注意:是在被调函数中使用指针变量
{int *p0 = p, sum = 0;
for( ; p <= p0 + 9; p++)
sum += *p;
printf(“sum = %d\n”, sum);
}
只需要传递一个参数就可以了(因为数组中的下标变量是连续的,得到一个变量的地址,便可以访问到每一个变量)。
使用这种地址传递,使得f2()不仅可以使用数组a中的数据(如本例),还可以改变它们,其实有时候我们本来就希望被调函数f2()来改变数组中的数据(如:对数组清0,对数组排序等),此时必须采用这种传递。
下面是对数组排序的例子:
void f1()
{void f2(int*);
int a[10] = {3,1,5,8,7,9,6,2,0,4}
f2(a); //数组名a作参数,而不是a[10]
……//输出排序后的数组
}
void f2(int *p)
{int i,j,k,t;
for(i = 0; i < 9; i++)
{k = i;
for(j = i + 1; j <= 9; j++)
if(p[j] > p[k]) //p[j]等价于*(p+j)
k = j;
t = p[i];
p[i] = p[k];
p[k] = t;
}
}
C++指针函数习题 一、选择题 1.以下程序的运行结果是()。 sub(int x, int y, int *z) { *z=y-x; } void main() { int a,b; sub(10,5,&a); sub(7,a,&b); cout< #include<>
海竿的组装方法与绕线主线、杆梢、八字环的连接方法 一、一般的连接方式。如图所示,要回折主线,打一个死结。向左转|向右转
向左转|向右转 二,打结的地方,拉得越紧,线受伤越严重,越容易折断。这就是通常说的结节抗拉强度低。问题就出这个死节上。说白了,就是因为打了死结,主线才容易在死结处折断。 这种连接方法,简单方便,适合于钓小鱼,因为拉力不大,即使有死结,主线也不容易折断。但是,钓大鱼就不同了,拉力大,竿稍处主线容易折断就是一个需要解决的问题了。要从根本上解决问题,就应该避免在主线上打死结。 {沿着这个思路,我们可以设计出几种没有死结的连接方式。 使用方法 海竿选择与应用
海竿的选择原则:海竿的长度与硬度:海竿要想投得远,竿是主体。一般来说,长竿投得远些,短竿就投得近些。竿的硬软与投远也有密切的关系。软竿反应灵敏,但难投远;硬竿易投远,但反应不灵敏。因此,竿的软硬选择一般我们应考虑所钓鱼目标和使用方式,一般钓大鱼或手持竿手感钓鱼选择弹性好的中硬竿,海钓小型鱼类如鲷类鱼或放竿看竿头信号钓法则宜选择软稍竿。海竿的主要优点这一是能放长线,钓大鱼,遛鱼方便跑鱼少。因此将海竿投远是关键因素,选择海竿的主要因素有以下几个。 1、根据用途选择海竿:海竿可用于海钓和淡水钓。如果条件允许可海钓竿和淡水钓竿分开购买使用。如果兼顾淡、海二用的海竿长度竿长一般在2.1----2.4为宜。可节省大笔开支。 2、淡水钓海竿的选择:淡水钓用海竿一般是在大水面的环境下使用,如水库、湖泊、大型的鱼塘,一般选择长度在2.7----3.1米为宜,如果你经常施钓的水域环境的钓点位置面积较宽阔这个长度范的海竿是最合适的。如果施钓的水域环境的钓点位置面积小,海竿长度以1.8----2.4米为宜。竿过长在投掷时竿头及坠、钩组容易挂到身后的树、石壁等障碍物,造成断竿损线等事故,而且在投掷时因空间小而产生心理干扰,造成定点不准,投不到位等情况发生。因面影响施钓成绩。 3、海钓竿的选择:海钓方式有船排钓、矶钓、深海船钓等,矶钓、深海船钓都有其专用设备,在此不做讨论,在这里我们通常为船、排钓。船、排钓的施钓环境一般都很狭小,在福建沿海可供海钓的船只一般一条船最多可容纳3—4人,
5.七种常用手工具的正确使用 尽管我们处在机械化程度相当高的时代,但是钻井行业中手工具及手工操作还是必不可少的。 为安全使用手工具,手工具使用者都应就两个方面进行学习或培训:手工具的正确选择和手工具的正确使用。做某项工作,就要选择适合于这项工作的工具。同时还必须正确地使用之。我们常常会看到,有人拿扳手当锤子用;拿螺丝刀当撬杠用。也有人在一个小扳手的手柄上套上一个很长的“加力管”。犯这些错误的原因可能是因为粗心或持有一种“无所谓”的态度。也许一时不会有什么事故发生,但谁能说得准什么时候会造成伤害呢? 任何种类的工具都需要爱护,始终保持其完好、工具拿到手就能用基于平时的良好保养和细心管理。 使用工具前,你要把手和工具都擦净。工具存放前,也要把工具擦净;而工具的存放方法应使之不会遭受损坏。 保证工具的安全可靠,是保证工作安全顺利的先决条件.检查一下你所负责管理或使用的那些工具吧!为的是使你自己和你的同伴免遭危险.卷边的苗子或锤子头、裂开的锤子手柄、松动的锤子头等往往就会成为人身伤害事故的根源. 对某项特殊工作要选择适合于这项工作的正确工具,这条原则必须始终坚持、如果你发现拿错了工具,即使这对安全并不妨碍或你认为肯定不会出事,也要花些时间把正确的工具拿来. 没有任何一项工作紧急或重要得连花些时间安全地把它做好的功夫都没有。实际上.不安全、不按正确的步出去做某项工作.花费的时间会更多。 5.1锤子的安全使用 可供使用的锤子的标准是:各处完好无损、锤头没有卷边并且坚固地与手柄连在一起、锤子各处和使用者的手都一定要干净。锤头损坏、手柄松动或断裂的锤子,
应及时修理和更换.修理时注意,往手柄里加楔以前,涂些粘合剂,绝不能用钉子来代替楔子. 手要握在锤子手柄的端部,这样敲起来才会有力量.握锤子的手若距捶头大近,不但使用起来不方便,而且也容易碰伤手指。 使用锤子时,要尽可能贴上护目镜.尤其是钉钉子;飞出来的钉子或其他什么东西,碰到眼睛,就可能使之失明,碰到身体其他部位,也易致伤。钉钉子时,要精力集中,否则就会砸伤手指、钉子刚开始钉入时,应靠近钉帽握钉子,轻轻地用锤子敲钉帽。当已钉进去一些后,握钉子的手松开再用力钉。这样,钉子就不会飞出来伤人了,也不会砸到手指。钉钉子使用平锤面的锤子,绝不能使用圆头锤、这些道理太简单了,但常常就有些人弄错。 锤子的手柄只能被用来握锤子,不得用它敲打东西或当杨撬杠用。 敲击硬的金属,不得用普通锤子,要用皮包头锤子或软金属锤。绝不能用锤子敲击扳手或另一只锤子. 使用锤子时,手要握紧,挥动要自如一要特别小心头顶上的障碍物。挥动时,注意不要伤人,也不要砸碰到其他设备。 不要把扳手、圆钢、螺栓或其他设备零部件当锤子用。 使用大锤敲击需夹持的工件时,要专门有人使用夹钳或其他合适的夹紧装置夹好工件,并且注意,挥锤范围内不得站人。夹工件的人与大锤挥动平面成直角、两人都要戴上护目镜。挥大锤时,关键是落锤点准确,还应注意大锤柄不要碰到什么东西上。 各项用锤子的工作,都有与之相适应的锤子,必须选择合适的。 5.2手钳的安全使用
用名作为其他变量名地别名. ; 等价于; ()声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名地一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元.故:对引用求地址,就是对目标变量求地址.与相等. ()不能建立数组地引用.因为数组是一个由若干个元素所组成地集合,所以无法建立一个数组地别名. 引用应用 、引用作为参数 引用地一个重要作用就是作为函数地参数.以前地语言中函数参数传递是值传递,如果有大块数据作为参数传递地时候,采用地方案往往是指针,因为这样可以避免将整块数据全部压栈,可以提高程序地效率.但是现在(中)又增加了一种同样有效率地选择(在某些特殊情况下又是必须地选择),就是引用. 【例】: ( , ) 此处函数地形参, 都是引用 { ; ; ; ; } 为在程序中调用该函数,则相应地主调函数地调用点处,直接以变量作为实参进行调用即可,而不需要实参变量有任何地特殊要求.如:对应上面定义地函数,相应地主调函数可写为: ( ) { ; >>>>; 输入两变量地值 (); 直接以变量和作为实参调用函数 <<<< ' ' <<; 输出结果 }
上述程序运行时,如果输入数据并回车后,则输出结果为. 由【例】可看出: ()传递引用给函数与传递指针地效果是一样地.这时,被调函数地形参就成为原来主调函数中地实参变量或对象地一个别名来使用,所以在被调函数中对形参变量地操作就是对其相应地目标对象(在主调函数中)地操作. ()使用引用传递函数地参数,在内存中并没有产生实参地副本,它是直接对实参操作;而使用一般变量传递函数地参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量地副本;如果传递地是对象,还将调用拷贝构造函数.因此,当参数传递地数据较大时,用引用比用一般变量传递参数地效率和所占空间都好. ()使用指针作为函数地参数虽然也能达到与使用引用地效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"地形式进行运算,这很容易产生错误且程序地阅读性较差;另一方面,在主调函数地调用点处,必须用变量地地址作为实参.而引用更容易使用,更清晰. 如果既要利用引用提高程序地效率,又要保护传递给函数地数据不在函数中被改变,就应使用常引用. 、常引用 常引用声明方式:类型标识符引用名目标变量名; 用这种方式声明地引用,不能通过引用对目标变量地值进行修改,从而使引用地目标成为,达到了引用地安全性. 【例】: ; ; ; 错误 ; 正确 这不光是让代码更健壮,也有些其它方面地需要. 【例】:假设有如下函数声明:
14种常见淡水鱼类垂钓方法 ?2012/6/24 14:43:27 ?铁血随风321 ?发帖于:钓鱼技巧 共 1 条评论 浏览 498 IP 如何垂钓马口鱼。 马口鱼大都生活在江河、湖泊、水库和山间溪流的中上层水域。更多的生活在山涧溪流中。清明后直到深秋季节,在无风的睛天,可成群地看到、但在大风天即沉入水底。此鱼个体不大,却是凶猛肉食鱼类。主要狩取小型鱼、幼鱼和水生昆虫为生。是水域中有害鱼类之一。 [ 转自铁血社区 https://www.wendangku.net/doc/585324745.html,/ p1.钓具选用:此鱼大都在50-150克,约4米左右手杆即可,钩选用伊势尼4-5号,线直径0.2-0.25亳米足可应对。用手杆浮钓,也可采取海杆串钩底钓。 p2.钓饵选用:可使用蚯蚓、蛆虫、也可使用小鱼、小活虾。 p3.钓点选择:江河溪流、水库有水草的砂砾浅水区和有水流的沟口。春、夏、秋三季每天傍晚,尤以夏季最佳。此鱼在睛天无风时最适宜垂钓,而阴天刮风则欠佳。如何垂钓桂鱼
桂鱼的习性和生活环境:桂鱼是定居性鱼类,不作长距离的洄游。常栖息在缓流或有回流的河道交*处。多在2--4米水深水底为硬泥、沙泥、石桥、石滩附近。成鱼常在水草丛中贴底,而在流水环境中往往上浮和逆水而上。冬季则生活在较深洞穴中,很少活动。春季大都在浅水区觅食,夏季同其它鱼种,则活跃,是垂钓最佳良机。 钓具的应用:手竿、海竿、甚至拉砣皆可、但要根椐钓场的具体自然条件灵活选用。竿尖相对较硬为好。钓线:直径0.35--0.4毫米。子线梢粗于主线[如用手杆可采用齐杆线钓法]。钓钩:选用钩门大钩,如伊势尼12--15号或15号鲤钩。 钓饵的选用:以小鱼为主。其次是小虾[冬季用红虫也可]。桂鱼喜食活饵,同黑鱼相似是吞食性鱼类。小活鱼的个体以8--10厘米为好,钩在鱼背上,虾也用同样方法。 [ 转自铁血社区 https://www.wendangku.net/doc/585324745.html,/ 垂钓方法:p1.底层浮钓法,形同浮垂钓鲢鱼。不同的是小鱼虾在临近水底游动,,桂鱼是否吃食完全在观查浮漂,不完全相似黑鱼、鲇鱼拉饵就跑、而是浮漂慢慢移动,此时即可提竿。 如何垂钓鲂鱼 鲂鱼是水中中层偏下层草食性鱼类、平时栖息在水底为淤泥、并有水草水域。按北京气温而言约5-6月份为繁殖期。成鱼主要成鱼主要摄苦草、黑藻、和植物碎屑,偶尔也食浮游生物。生长速度也较快、前六年曾在沙厂水库钩到7.8斤大鲂但大都在2斤左右。
海竿组装图解 随着路亚的在国内不断传出,很多钓友喜欢了路亚和海钓。但是由于海钓在国内起步较晚,因此很多钓友在钓具组装和使用上存在很多疑问,今天就和大家分享下海竿的组装步骤。 海竿组装图解海竿又叫投竿或者是抛竿,它在钓竿的柄部安装一个绕线轮,上面装有钓线。当用力甩投时,就能把饵钩抛到较远的水域,海竿的尺寸一般为1.8m、2.1m、2.4m、2.7m、3.0m、3.6m。 早期的海竿大多数为玻璃钢材质,目前多为碳纤微材质。 1海竿的安装步骤 第一步:逐节拉开海竿,使各过线圈对齐,并在一条直线上,各节连接处应稍加力拉紧。 海竿的组装图解第二步:安装绕线轮,将绕线轮安装在卡座上,用螺母将其固定死。
海竿组装图解第三步:安装鱼线,逐个穿个通过过线圈。 海竿组装图解第四步:安装8字环。 海竿组装图解第五步:安装线组。
海竿组装图解第六步:安装铃铛。 海竿组装图解经过以上结果步骤,海竿基本安装完毕。接下来的就是根据不同的钓法来更换不同的线组。2海竿沉底双钩线组 海竿组装图解 3双坠钓浮线组
海竿组装图解4串钩钓底线组 海竿组装图解以上是几种海竿线组的组装图,希望给大家有所知道。
海竿的组装方法图解 组装海竿对新手来说或许是一件头疼的事,其实只要掌握海竿的组装方法,组装海竿是非常简单的,下面为大家介绍一下海竿的组装方法。 海竿、线、轮、钩组装的程序是: 先装轮。拧动钓竿下段的旋钮,把线轮的上下铁片插人竿上的上下两个铁箍中,再把旋钮拧紧。然后摇摇线轮,看是否有松动现象。否则,再拧紧。 把绕线轮的拨线架向内扳,把钓线从拨线架的下面穿出,然后把钓线穿入各导线环中。边穿线,边抽拉竿的各节,全部拉出后线头从竿梢上的最小的导线环中穿过。 把各导线对齐,使之在一条直线上。导线环也应与线轮上的线轴在一条直线上。 装轮时,摇把可固定在轮的右侧,也可在轮的左侧,拧动轮把上的螺丝是可以调整的。