跳转到内容

软件工程师手册/语言词典/C

来自维基教科书,开放的世界,开放的书籍

在这里寻找 C 的故事

C 是一种完整的过程式语言。

执行入口点

[编辑 | 编辑源代码]

可执行文件从 main() 方法开始。

一般语法

[编辑 | 编辑源代码]

典型的语句以分号结束。要将 b 赋值给 a,请使用

a = b;

块注释以 /* 开始,以 */ 结束,可以跨越多行。

/*
 * this is a block comment
 */

变量声明

[编辑 | 编辑源代码]

声明需要出现在作用域的顶部。

将 i 声明为整数

int i;

将 i 声明为整数,并赋予其初始值为 0

int i = 0;

方法声明/实现

[编辑 | 编辑源代码]

方法通过指定方法的接口来声明。

return_type function_name(argument_1_type arg_1_name,
                          argument_2_type arg_2_name);

方法实现重复了许多相同的信息

return_type function_name(argument_1_type arg_1_name, 
                          argument_2_type arg_2_name)
{
    // work with arg_1_name, arg_2_name, and default_arg_name
    // depending on the argument types the variables are passed by 
    //   value, reference, or are constant
    // don't forget to return something of the return type
    return 36;
}

范围由花括号定义。

{ // this the beginning of a scope
    // the scope is about to end
}

条件语句

[编辑 | 编辑源代码]

当且仅当 A 等于 B 时,将 C 赋值给 D,否则,将 E 赋值给 F。

if (A == B)
{
    D = C;
    // more code can be added here.  It is used if and only if A is equal to B
}
else
{
    F = E;
    // more code can be added here.  It is used if and only if A is not equal to B
}

或者

if (A == B)
    D = C; //more lines of code are not permitted after this statement
else
    F = E;

或者,可以使用 switch 语句来执行多个选择操作。此示例将数字输入转换为文本。

switch (number_value)
{
    case 37:
        text = "thirty-seven";
        break; // this line prevents the program from writing over this value with the
               //   following code
    case 23:
        text = "twenty-three";
        break;
    default: // this is used if none of the previous cases contain the value
        text = "unknown number";
}

循环语句

[编辑 | 编辑源代码]

此代码从 0 到 9 计数,将数组的内容加起来。

int i = 0;
for (int index = 0; index < 10; index = index + 1)
{
    i = array[index];
}

此代码重复,直到找到数字 4 为止。如果它运行到数组末尾,则可能存在问题。

int index = 0;
while (4 != array[index])
{
    index = index + 1;
}

此代码在进行检查之前递增计数器,因此它从元素 1 开始。

int index = 0;
do
{
    index = index + 1;
}
while (4 != array[index]);

输出语句

[编辑 | 编辑源代码]
printf ("%s","Hello world!\n");

结构体

实现您自己的算法,或者找到一个库。

垃圾回收

[编辑 | 编辑源代码]

垃圾回收是手动的。

物理结构

[编辑 | 编辑源代码]

通常,接口在实现之前定义在头文件中(通常为 *.h)或在实现之上。实现文件通常命名为 *.c。有用的类集合可以编译成库,通常为 *.dll、*.a 或 *.so,这些库可以编译成可执行文件(静态链接)或动态使用(动态链接)。

不要混淆这两者

=  // assignment
== // comparison, is equal to

通常,使用您不想要的那个会编译,并产生您没有预期的结果。

一个好的做法是编写:if(CONSTANT == variable) 而不是 if(variable == CONSTANT),因为编译器会捕获 if(CONSTANT = variable),但不会捕获 if(variable = CONSTANT)。

使用生成大量有用警告的编译器,即使代码有效。您也可以/使用 'lint' 等程序。这将帮助您避免简单的错误,例如上面提到的错误“if ( x = 1 )”而不是“if ( x == 1 )”。

数组从索引 0 开始。

网络参考

[编辑 | 编辑源代码]

列出网络上的其他参考资料。请包括参考资料适用于什么级别的读者。(初学者/中级/高级)

书籍和文章

[编辑 | 编辑源代码]

需要参考

C 编程语言:(示例链接:http://cm.bell-labs.com/cm/cs/cbook/ )

华夏公益教科书