烂笔头之C语言基础

it2025-05-05  11

如何提高C语言的编程效率 以空间换时间,充分利用内存使用高效的算法,如使用高斯算法求1至100的和使用使用位操作嵌入汇编 使用typdef可以定义新的类型(其实就是别名),如typedef int INTEGER;使用auto声明的自动变量属于局部变量,关键字auto可以省略用static关键字声明外部变量,会得到静态全局变量,或者称为静态外部变量,该变量只限于本文件内使用。用register关键字定义的变量(只有局部变量可以这么定义)只是提示编译器将变量定义为寄存器变量,但不是必须将其设置为寄存器变量,因为计算器中的寄存器数量有限,当寄存器不够用是,编译器会将该变量当做自动变量处理。用extern关键字声明的在函数外部定义的变量是外部变量(全局变量),其作用域是从变量的定义处开始,到程序文件的结尾处结束。外部变量可以被其作用域内的所有函数调用。 声明在一个文件中使用的外部变量

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头文件中 malloc

void *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指向的内存区,使其能被其他变量使用。

最新回复(0)