C语言中的基本概念,从整体上认识C语言

    本片博客从整体上介绍C语言的基本概念,相当于是C语言的常识,目的是准确理解C语言。

    C语言是非常重要的语言,从C语言基本语法的使用,比如结构、指针、控制流等,到使用C语言标准库函数;从阅读C标准库源码实现到使用Windows操作系统和Linux操作系统的系统调用来实现C标准库和其他功能;从最开始的玩具代码到管理系统,再到结合easyx的界面程序开发,再到能够自己写出一个基于Windows系统的“任务管理器”。对于程序开发,功能实现的理解越来越深,再将《C程序设计语言》这本书从头读一遍,有一种酣畅淋漓的感觉。初学时的很多疑惑,比如为甚需要在C语言中引入逻辑运算符等,消失无疑。“原来如此”。

    C语言带来的启发很多,需要的知识面也较广。也许有人会说这仅仅是面向过程的编程语言,现在大多使用面向对象的语言,但是操作系统这么强大的软件不都主要是由C语言来开发的吗?C语言带来的开发体验和认识是无可替代的,无论是对于学习java,还是Python,lisp,甚至是Android,C语言有了很好的功底,研究Android操作的底层应该会更加容易。

    进入主题吧,准确掌握C语言中的基本概念。

    1)翻译单元(translation unit):C语言的一个翻译单元就是一个源文件(.c)文件。C语言在编译时,每一个源文件是单独编译的。程序是由储存在文件中的一个或者多个翻译单元组成的。

    2)记号:C语言中公有6类记号,标识符、关键字、常量、字符串字面值、运算符和其他分隔符。

    3)空白符:空格,横向制表符和纵向制表符,换行符,换页符和注释统称为空白符。在程序中仅仅用来分割记号,因此将被忽略。

    4)注释:注释以/*开始,以*/结束。注释不能够嵌套,也不能够出现在字符串字面值和字符字面值中。

    5)标识符:标识符是由数字和字符构成的序列,第一个字必须为英语字母,下划线也被看成是字母。C语言中大小写是不同的。

    6)关键字:

C语言中被保留的关键字如下(截止写这篇博客之前):

auto,     double,    int,    struct,     break,    else,    long,    switch,    case,    enum,    register,    typedef,    char,    extern,    return,    union,    const,    float,    short,    unsigned,    continue,    for,    signed,    void,    default,    goto,    sizeof,    volatile,    do,    if,    static,    while

某些实现还将fortran和asm保留为关键字。

    7)常量:常量包括整型常量,字符常量,浮点常量,枚举常量。

整型常量:整形常量由一串数字组成。

    整型常量进制:一般情况下默认为十进制,以0开头为8进制,以0x或者0X开头为16进制。

    整型常量的后缀:u或者U为后缀表示无符号数,l或者L为后缀表示长整型,以UL为后缀表示无符号长整型。

字符常量:字符常量是用单引号引起来的一个或者多个字符序列。

    单字符常量的值:机器字符集中此字符对应的值,为整型,占据一个字节。多字符常量的值:具体实现定义。

扩展字符集(宽字符)问题

    扩展字符集主要用来解决宽字符问题。英语字母这类字符可以用一个字节来存储(使用其值的二进制存贮),但是像中文汉字这类字符,使用一个字节已经超出了表示范围,所以使用多个字节来存储。并且这类字符叫做宽字符。

    宽字符的类型问题:wchar_t,也是一种整型类型,在标准头文件<stddef.h>中定义。注意宽字符不能使用char类型表示,如果将宽字符使用char类型表示,会发生截断。

    宽字符格式问题:扩展集中的常量需要使用前导符L,无论是字符常量还是字符串,例如L'中',L“世界”。

    宽字符值的问题:

    宽字符输出 / 输出问题:C语言中宽字符输入需要使用wscanf()函数,输入需要使用wprintf()函数,同时需要设置本地化,以适应宽字符输出。示例:

#include <stdio.h>
#include <locale.h>

int main() {
	setlocale(LC_ALL, "chs");    // 设置本地化

	wchar_t wa;
	wchar_t *wp = L"世界,你好!"; 
	wscanf(L"%c", &wa);
	wprintf(L"%c\n", wa);
	wprintf(L"%s\n", wp);
	return 0;
}

  

上述如有错误的地方,欢迎指出,不胜感激!

猜你喜欢

转载自blog.csdn.net/d13419467942/article/details/82388648