极速下载站 —— 提供优质软件下载服务,感受全新的极速下载体验!

最近更新 | 软件专题 | 软件分类 | 软件排行

您的位置:极速下载站资讯首页软件教程软件资讯 → 怎样了解C言语中的指针,怎样运用(2)

怎样了解C言语中的指针,怎样运用(2)

时间:2019-08-09 13:06:02  作者:johnnyl  浏览量:41

先来看看结构体指针。仍是从实例动身,咱们界说一个结构体类型,它有两个成员,分别是 sleep_time(睡觉时刻) 和 work_time(工作时刻),然后界说这种结构体类型的变量和指针:

struct week{

double sleep_time;

double work_time;

};

struct week w;

struct week *pw = &w;

能够经过结构体指针 pw 拜访 week 结构体的成员:

(*pw).sleep_time = 7.0;

这样写有点费事,因而 C 言语十分贴心的供给了“->”运算符,所以咱们还能够这样经过结构体指针拜访成员:

pw->sleep_time = 7.0;

为什么要运用 C 言语中的指针

好了,现在咱们已经知道 C 言语中的结构体指针怎样运用了,衬托完了。可是,分明运用结构体变量 w 就能很好的读写 week 结构体啊,为什么要用结构体指针呢?这不是费事了吗?

为什么要运用结构体指针,其实能够延伸到“为什么要运用指针”,本节将以结构体指针为例讨论一下这个问题。

是的,仅仅拜访 week 的 sleep_time 成员,只运用结构体变量 w 就足够了,再经过 pw 拜访真的费事了。可是工具会不会带来便利,要看咱们怎样运用,不能由于高射炮打蚊子不便利就说高射炮没用。恰当的运用结构体指针,有利于咱们写出愈加紧凑,功率更高的 C 程序。

图:怎样了解C言语中的指针

图二 怎样了解C言语中的指针,怎样运用

一周有五天工作日,两天周末,一般来说,在工作日(weekday),人们的睡觉时刻较短,工作时刻较长,所以咱们界说 weekday 函数来规划工作日的时刻:

void weekday(struct week wd)

{

wd.sleep_time = 7.0; // 7 小时

wd.work_time = 8.5; // 8.5 小时

}

而在周末(weekend)则反过来,工作间较短,睡觉时刻较长,所以咱们界说 weekend 函数来规划周末的时刻:

void weekend(struct week we)

{

we.sleep_time = 9.0; // 9 小时

we.work_time = 2.5; // 2.5 小时

}

这两个函数很好的规划了一周的睡觉和工作时刻,可是却并不好用。为什么呢?由于它俩只在自己内部规划了,咱们外界看不到啊!想在 main 函数把规划好的时刻打印出来都办 不到,由于它俩在自己内部规划好以后,就把“规划书”销毁了。

这儿把 weekday 和 weekend 函数的局部变量比作“规划书”,函数退出后,局部变量就自动销毁了。能够参阅《c言语入门5,一文彻底弄懂函数的形参和实参》一节。可能你会说,那我能够把“规划书”返回给 main 函数啊,让 weekday 和 weekend 函数有返回值就能够了:

struct week weekday(struct week wd)

{

wd.sleep_time = 7.0; // 7 小时

wd.work_time = 8.5; // 8.5 小时

return wd;

}

struct week weekend(struct week we)

{

we.sleep_time = 9.0; // 9 小时

we.work_time = 2.5; // 2.5 小时

return we;

}

int main()

{

struct week w;

w = weekday(w);

printf(\\\"weekday,sleep time: %0.1f,work time: %0.1f \\\",w.sleep_time,w.work_time);

weekend(w);

printf(\\\"weekend,sleep time: %0.1f,work time: %0.1f \\\",w.sleep_time,w.work_time);

return 0;

}

是的,这的确是一个解决问题的办法,main 能够把 weekday 和 weekend 函数的“规划书”打印出来了。

可是这种解决问题的办法有一点臃肿,许多程序员把这样的代码称为“不优雅”的代码。你看,main 现在有一份空的“规划书”,需求 weekday 和 weekend 函数处理。weekday 和 weekend 函数能处理,可是它们要仿制一份“规划书”回到自己内部做,这种仿制就造成了空间浪费。此外,weekday 和 weekend 函数做完了规划书,还要把“规划书”再从自己内部取出,return 给 main,这就有时刻浪费。

<上一页123下一页>

相关资讯