char c[10],字符数组名c代表代表了该数组的首地址,整个数组是以首地址开头的一块连续的内存单元。
一、用法
- 字符数组赋值的三种方法
- 定义的时候直接用字符串赋值
char a[10]="hello";- 不能先定义再给它赋值,如
char a[10]; a[10]="hello";
- 不能先定义再给它赋值,如
- 对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'}; - 利用strcpy
char a[10]; strcpy(a, "hello");
- 定义的时候直接用字符串赋值
1 | int main() { |
- 结构体
1 | #include <stdio.h> |
C89-C99-C11
- 起源
- C语言最早的原型是
ALGOL 60,1963年剑桥大学将其发展成为CPL(Combined Programing Language)。 - 1967年剑桥大学的
Matin Richards对CPL语言进行了简化,产生了BCPL语言。 - 1970年美国贝尔实验室(Bell Labs)的
Ken Thompson将BCPL进行了修改,并取名叫做B语言,意思是提取CPL的精华(Boiling CPL down to its basic good features),并用B语言写了第一个UNIX系统。 - 1973年
AT&T贝尔实验室的Dennis Ritchie(D.M.RITCHIE)在BCPL和B语言的基础上设计出了一种新的语言,取BCPL中的第二个字母为名,这就是大名鼎鼎的C语言。随后不久,UNIX的内核(Kernel)和应用程序全部用C语言改写,从此C语言成为UNIX环境下使用最广泛的主流编程语言。
- C语言最早的原型是
- 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语言标准,被称为C89、ANSI C。- ISO/IEC 9899:1990
:1990年ISO和IEC把C89标准定为C语言的国际标准,又称C90、ISO C,是C语言的第一个官方版本,因此C89、C90、ANSI C、ISO C、ANSI/ISO C`实际上是一套东西。 ISO/IEC 9899:1990/Cor 1:1994ISO/IEC 9899:1990/Amd 1:1995ISO/IEC 9899:1990/Cor 2:1996ISO/IEC 9899:1999:1999年ISO和IEC发布了C99,是C语言的第二个官方版本。ISO/IEC 9899:1999/Cor 1:2001ISO/IEC 9899:1999/Cor 2:2004ISO/IEC 9899:1999/Cor 3:2007ISO/IEC 9899:2011:2011年ISO和IEC发布了C11,是C语言的第三个官方版本,也是C语言的最新标准。
- 参考
- 起源
gcc-g++-cc-CC
GCC是GNU Compiler Collection的缩写,即GNU编译器集合,可以编译C、C++、Objective-C、Ada、Fortran、Java。gcc是GCC中的GUN C Compiler,即C语言编译器。g++是GCC中的GUN C++ Compiler,即C++编译器。cc是Unix系统的C Compiler,一个是古老的C编译器。在Linux下cc一般是一个符号连接,指向gcc。- 可以通过
ls -l /usr/bin/cc来察看,该变量是make程序的内建变量,指向gcc。
- 可以通过
CC则一般是makefile里面的一个名字标签,即宏定义,表示采用的是什么编译器,如CC=gcc。误区
- 对于
*.c和*.cpp文件,gcc分别当做c和cpp文件编译,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++来完成联接。符号链接是一种特殊类型的文件,它的内容是一个字符串。它可能指向一个存在的文件也可能什么都不指向。当在命令行或程序里提到符号链接的时候,实际上进入了它指向的文件(前提是这个文件存在)。
- 对于