0%

C语言收集

char c[10],字符数组名c代表代表了该数组的首地址,整个数组是以首地址开头的一块连续的内存单元。

一、用法

  1. 字符数组赋值的三种方法
    • 定义的时候直接用字符串赋值char a[10]="hello";
      • 不能先定义再给它赋值,如char a[10]; a[10]="hello";
    • 对数组中字符逐个赋值char a[10]={'h','e','l','l','o'};
    • 利用strcpychar a[10]; strcpy(a, "hello");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main() {
char a[10]="hello1";

char b[10]={'h','e','l','l','o', '2'};

char c[10];
strcpy(c, "hello3");

printf("%s\n", a);
printf("%s\n", b);
printf("%s\n", c);

return 0;
}
  1. 结构体
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Animal{
char name[40];
char country[40];
int lifetime;
char flag;
};

struct Bird{
char *name[20];
char *country[40];
int lifetime;
char flag[10];
};

int main() {

struct Animal a;
struct Bird b;

strcpy(a.name, "dog");
strcpy(a.country, "世界");
a.lifetime = 10;
a.flag = 'D';

strcpy(b.name, "cat");
strcpy(b.country, "世界");
b.lifetime = 30;
strcpy(b.flag, "hello");

return 0;
}
  1. C89-C99-C11

    • 起源
      • C语言最早的原型是ALGOL 60,1963年剑桥大学将其发展成为CPL(Combined Programing Language)
      • 1967年剑桥大学的Matin RichardsCPL语言进行了简化,产生了BCPL语言。
      • 1970年美国贝尔实验室(Bell Labs)的Ken ThompsonBCPL进行了修改,并取名叫做B语言,意思是提取CPL的精华(Boiling CPL down to its basic good features),并用B语言写了第一个UNIX系统。
      • 1973年AT&T贝尔实验室的Dennis Ritchie(D.M.RITCHIE)BCPLB语言的基础上设计出了一种新的语言,取BCPL中的第二个字母为名,这就是大名鼎鼎的C语言。随后不久,UNIX的内核(Kernel)和应用程序全部用C语言改写,从此C语言成为UNIX环境下使用最广泛的主流编程语言。
    • C语言标准
      • 1972年C语言诞生,C语言之父是丹尼斯·里奇(Dennis Ritchie),同时也是UNIX之父。C语言从出现到现在,历经几十年一直都占据着编程语言排行的前几名,其发展主要经历了以下几个阶段:
      • K&R C:1978年由布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)出版了《The C Programming Language》,这本书被C语言开发者们称为K&R,很多年来被当作C语言的非正式标准,人们称这个版本的C语言为K&R C`。
      • ANSI C:1989年ANSI发布了C语言标准,被称为C89ANSI C
      • ISO/IEC 9899:1990:1990年ISOIECC89标准定为C语言的国际标准,又称C90ISO C,是C语言的第一个官方版本,因此C89C90ANSI CISO CANSI/ISO C`实际上是一套东西。
      • ISO/IEC 9899:1990/Cor 1:1994
      • ISO/IEC 9899:1990/Amd 1:1995
      • ISO/IEC 9899:1990/Cor 2:1996
      • ISO/IEC 9899:1999:1999年ISOIEC发布了C99,是C语言的第二个官方版本。
      • ISO/IEC 9899:1999/Cor 1:2001
      • ISO/IEC 9899:1999/Cor 2:2004
      • ISO/IEC 9899:1999/Cor 3:2007
      • ISO/IEC 9899:2011:2011年ISOIEC发布了C11,是C语言的第三个官方版本,也是C语言的最新标准。
    • 参考
  2. gcc-g++-cc-CC

    • GCCGNU Compiler Collection的缩写,即GNU编译器集合,可以编译CC++Objective-CAdaFortranJava

    • gccGCC中的GUN C Compiler,即C语言编译器。

    • g++GCC中的GUN C++ Compiler,即C++编译器。

    • ccUnix系统的C Compiler,一个是古老的C编译器。在Linuxcc一般是一个符号连接,指向gcc

      • 可以通过ls -l /usr/bin/cc来察看,该变量是make程序的内建变量,指向gcc
    • CC则一般是makefile里面的一个名字标签,即宏定义,表示采用的是什么编译器,如CC=gcc

    • 误区

      • 对于*.c*.cpp文件,gcc分别当做ccpp文件编译,g++则统一当做cpp文件编译。
      • 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会。
        • 在用gcc编译cpp文件时,为了能够使用STL,需要加参数–lstdc++
      • gcc在编译c文件时可使用的预定义宏比较少,gcc在编译cpp文件时或g++在编译c文件和cpp文件时会加入一些额外的宏。
      • 编译可以用gcc/g++,而链接可以用g++gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。

        符号链接是一种特殊类型的文件,它的内容是一个字符串。它可能指向一个存在的文件也可能什么都不指向。当在命令行或程序里提到符号链接的时候,实际上进入了它指向的文件(前提是这个文件存在)。

二、资料

  1. C语言教程
  2. GitHub-Chinese-Top-Charts