C 语言注解

本文意在帮助从零开始接触编程和代码书写的C语言初学者入门,从零开始逐步掌握对 C 语言与编程的概念理解。

但你不要搞错,这并不是说本系列会是又一个C语言入门教程——哥们,现在已经2026年了,互联网已经蓬勃发展到看起来有些后劲不足的年代了!网上教程那么多,为什么还需要再写一个一样的呢?

考虑到此,笔者会将本系列侧重点放在C 语言注解上,对 C 学习过程中的各种语法提出在语法上的技巧,可供学习时参考和思考。

引子:C语言语法比你想得更加宽松 #

C 语言不是一板一眼的死板语言,相反,C 语言有一种简洁之美——在语言的数条抽象的基本语法规则下,只要你符合基本规则,怎么写都可以。

我觉得最能说明这点的就是一段真实可运行的 C 语言代码:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
            int i,j,k,x,y,o,N;
         main(){float z[1761],a
      #define R(t,x,y) f=x;x-=t*y\
   ;y+=t*f;f=(4-x*x-y*y)/2;x*=f;y*=f;
   =1,e=1,c=1,d=0,f,g,h,G,H,A,t,D;char
 b[1761];for(;;){memset(b,32,1760);g=0,
h=2;memset(z,0,7040);for(j=0;j<90;j++){
G=1,H=1;for(i=0;i<314;i++){A=h+2,D=1/(G*
A*a+g*e+6);t=G*A        *e-g*a;x=40+30*D
*(H*A*d-t*c);y=          13+15*D*(H*A*c+
t*d);o=x+81*y;N          =8*((g*a-G*h*e)
*d-G*h*a-g*e-H*h        *c);if(23>y&&y>
 1&&x>0&&80>x&&D>z[o]){z[o]=D;b[o]=(N>0
  ?N:1)[".,-~:;=!*#$@"];}R(.02,H,G);}R(
  .010,h,g);}for(k=0;1761>k;k++)putchar
   (k%81?b[k]:10);R(.04,e,a);R(.02,d,
     c);usleep(15001);printf('\n'+(
        " donut.c! \x2b[23A"));}}
           /*4D-spinning-donut*/
如果没法运行,试试在 Dev C++ 上运行。

这是知名的 donut 甜甜圈代码,效果是在黑色的终端上显示一个会实时旋转的甜甜圈。

是不是和你印象中的 C 语言相差甚远?但是,它和你遵守的确实同样一套 C 语言语法。

可见 C 语言的语法是相当宽松的,只要你的代码符合基本语法规则,怎么写都能运行。虽然你在实际编程中这么写大概会被看你代码的人打一顿。

在本系列中,我会为 C 语言的语法附上注解,弥补那些可能有些教程中不会提及的基本语法。