*号在C语言格式化字符串中的作用

云中漫步 » *号在C语言格式化字符串中的作用

*号在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)了。

原文地址:https://www.cnblogs.com/lexus/p/2620105.html