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++
来完成联接。符号链接是一种特殊类型的文件,它的内容是一个字符串。它可能指向一个存在的文件也可能什么都不指向。当在命令行或程序里提到符号链接的时候,实际上进入了它指向的文件(前提是这个文件存在)。
- 对于