书写规范的c语言(进阶篇)

许多时候初学者会看到高手写的程序感觉非常的专业,但自己就是说不出来哪里专业。对比两人的程序感觉不一样就是说不出来,为此quicl收集了一种非常系统的方法,让你的程序看起来也是专业的水准。很多时候代码规范就是专业,让我们一起来学习吧~~

1.1符号命名规则

1.1.1符号名包括模块名、常量名、标号名、子程序名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。命名采用匈牙利命名法。规则如下:

       (1)所有宏定义、枚举常数和const变量,用大写字母命名。在复合词里用下划线隔开每个词。

       (2)复合词中每个单词的第一个字母大写。除了规则5.1.1.1以外,避免使用下划线。

       (3)类、类型定义和枚举型名的第一个字母大写。

       (4)函数名是复合词的,第一个词采用全部小写,随后每个单词采用第一个字母大写,其它字母小写方式;如果是单个词的,采用全部小写方式。

       (5)循环变量可采用i, j, k等,不受上述规则限制。

       (6) 类的成员变量应采用m_开头。

       (7) 全局变量词头为g_ 。

       (8) 临时变量词头为tmp_ 。

       (9) 对结构体内的变量命名, 遵循变量的具体含义命名原则

       (10)用小写字母的前缀表示变量的类型,前缀的下一个字母用大写。  

Continue reading

简述形参和实参之间的关系

形参起替代作用,调用时用实参替代形参。

在函数声明时,char *strcpy(char *dest, const char *source);dest和source让含义一目了然,也可以省略dest和source

函数调用时,有传值和传址两种方式,前者会把实参的一个副本给了调用函数,调用之后原实参的值不变,后者会把实参的地址给了调用函数,调用函数能够直接修改实参的值。

比如,void swap(int x, int y)

{

int t;

t = x;

x = y;

y = t;

}

 

int m = 5,n = 8;

swap(m, n);之后m =5, n =8;

但如果:void swap(int *x, int *y)

Continue reading

网络编程基础(高手绕道)

如果你是高手,就不要看了 :)

经常会看到许多人问几乎相同的基础问题,这里根据自己的习惯做一些描述,这个帖子会慢慢根据大家的问题更新(希望可以坚持住 ^_^),希望对初学者有所帮助。

一、关于语言、编译器及系统

我们知道,在计算机里面进行程序设计至少需要掌握一种程序设计语言。常见的程序设计语言包括C/C++、ASM、BASIC、Delphi、Perl等,你随便根据兴趣去学习一种语言都可以实现程序设计这个目的,这些语言并没有谁比谁更好的问题(这是一个理解问题,实际上一些语言应该说比一些语言更先进,比如可以说C++比C更先进,但不能说谁比谁好,每一种语言都是优秀思想的结晶,我这样理解),只是它们的侧重点不同。比如,ASM、C比其他语言更接近系统的底层,使得它们适合做系统方面的程序设计、而用BASIC可以更快的设计应用程序等。作为网络程序设计我更喜欢C/C++语言,它有目标程序较小、运行速度快等优点,还包括习惯问题(所以,下面的描述中如果不特别说明,都以C/C++为例),当然选择什么语言进行程序设计是见仁见智的问题(你决定选择C/C++了吗?如果决定了,下面的的描述会更有针对性)。

我们选择好一种语言后,并编写好了程序代码,这么样才能让系统运行我们的程序呢?这就需要编译器了,编译器的作用就是把类似下面的源代码编译成系统可以识别并执行的代码:

#include <stdlib.h>

int main()

{

printf(“hello word.rn”);

return 0;

}

所有的语言都有自己的编译器,C语言的编译器有TC、BC等,C++语言的编译器有Visual C++、C++ Builder等。C和C++语言的关系是很密切的,C++语言是C语言的超集,而因为向下的兼容性,所以,如果你写的C源代码符合ANSI C标准,那么其在C和C++的编译器里面都可以编译,相反,C++的源代码只能在C++的编译器中编译。

那么编译器除了可以把源代码编译成可执行代码还有其他的作用吗?

Continue reading

#includemain(You) {For{;;}{forget 2.14;if(I meet You)break;else;}}

懵懂的路过二十载,跨过青葱岁月,清新地注意起这平凡的一天。

——Quicl