*号在C语言格式化字符串中的作用
只要熟悉C语言的人,没有不熟悉格式化字符串的,因为基本上所有人学习C语言的第一个函数都是printf函数。当然printf所支持的格式化输出字符串也是每个学习C语言的人所熟悉。但是这几天在查看一个开源库代码的时候发现在格式化字符串中有“*”号,恕Simon愚钝,猛一看还真不知道什么意思。看来学习无止境阿,我们整天用的printf函数还是需要我们再进行深入学习的!
请看如下函数代码:
1: #include <;stdio.h>2:
3: int main()
4: {
5: int width = 10, precision = 2;6: double pi = 3.1415926;7:
8: printf("%*.*f", width, precision, pi);9: }10:
上面的代码输出是什么呢?上面的*代表什么呢?让人迷惑阿!
把上面的代码转换一下,转换成另外一段代码大家熟悉了。上面的代码等价于下面的代码:
1: #include <;stdio.h>2:
3: int main()
4: {
5: double pi = 3.1415926;6:7: printf("%10.2f", pi);8: }
9:
如果问上面这段代码的输出是什么?大家肯定都知道是什么了吧。
在C语言的格式化字符串中的*的作用就是,从后面的参数中读取一个整数来代替这个*,以上面的例子为例:第一*将会读取width来代替*号,第二个*号将会读取下一个参数precision来代替*号。这样就等价printf("%10.2f", pi)了。
标签:cc