main(){ extern int a,b; } int a=3,b=5;
声明在多个文件中使用的外部变量file1.c int exponent=2; main(){ int result; result=myPower(10); } file2.c extern exponent; int myPower(int n){ return power(n, exponent); }
为了实现字符数据的输出,C语言函数库提供了一个putchar函数,用于向终端输出一个字符。注意,putchar每次只输出一个字符。对应的getchar可以从终端输入一个字符。格式输出函数printf使用的格式字符:d-带符号整数、o-八进制无符号整数、x-十六进制无符号整数、u-无符号整数、c-单个字符、s-字符串、f-小数形式、e-指数形式、g-以%f%e中较短的输出宽度输出单、双精度实数。对应格式输出函数为scanf。多维数组示例:int arr[2][4][3];C语言没有字符串变量,字符串存储在字符数组中,如:char c[]=“hello”;
字符串长度为6,系统自动在末尾加上"\0"
使用static声明的内部函数限于本文件内使用,使用extern声明的外部函数在整个源程序中都有效哈哈,指针变量示例int *num;
结构体示例:struct employee{ int no; char name[20]; };
结构体变量声明示例:struct employee e;
共用体/联合体,用来将几种不同的变量存放到同一段内存单元中。同一时刻只能有一个值。由于所有成员存放在同一块内存中,因此共用体的大小等于最大成员的大小。示例:union z_val{ int i; char c; float f; };
union z_val zVal; zVal.i=97; zVal.c=‘A’;
在程序中改变共用体的一个成员,其它成员也会随之改变,如zVal.i=‘A’;赋值后,zVal.i的值将变成65,而不是原来的97
预处理 不带参数的宏定义 示例:#define SIDE 5 #define AREA SIDE*SIDE
#undef可以终止宏定义的作用域
带参数的宏定义 示例:#define MAX(a,b) a>b?a:b
#include可以将另一个源文件的全部内容包含进来,被读入的源文件必须用双引号或尖括号括起来,如:#include “stdio.h” #include <stdio.h>
条件编译:#if、#ifdef、#ifndef、#undef、#line(#line命令用来改变_LINE_与_FILE_的内容,_LINE_存放的是当前编译的行号,_FILE_存放的是当前编译的文件名,主要用于调试及其他特殊用途)、#pragma(#pragma用来设定编译器的状态或者指示编译器完成一些特定的动作) 示例:#define MAX_SIZE 100 char arr[MAX_SIZE]; #undef MAX_SIZE
存储管理的几个函数,包含在stdlib.h头文件中 mallocvoid *malloc(unsigned int size);
其作用是在内存中动态地分配一块size大小的内存空间。malloc函数会返回一个指针,该指针指向分配的内存空间;如果出现错误,则返回NULL。 2. calloc
void *calloc(unsigned n, unsigned size);
其功能是在内存中动态分配n个长度为size的连续内存空间。calloc函数会返回一个指针,该指针指向动态分配的连续内存空间地址;如果出现错误,则返回NULL。 3. realloc
void *realloc(void *ptr, size_t size);
其功能是改变ptr指针指向的空间大小为size大小。设定的size大小可以是任意的,也就是说可以比原来的数值大,也可以比原来的数值小。返回值是一个指向新地址的指针,如果出现错误则返回NULL。 4. free
void free(void *ptr);
free函数的功能是释放指针ptr指向的内存区,使其能被其他变量使用。