烂笔头之C语言基础

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

main(){
extern int a,b;
}
int a=3,b=5;

  1. 声明在多个文件中使用的外部变量

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

  • 预处理
  1. 不带参数的宏定义
    示例:

#define SIDE 5
#define AREA SIDE*SIDE

#undef可以终止宏定义的作用域

  1. 带参数的宏定义
    示例:

#define MAX(a,b) a>b?a:b

  1. #include可以将另一个源文件的全部内容包含进来,被读入的源文件必须用双引号或尖括号括起来,如:

#include “stdio.h”
#include <stdio.h>

  1. 条件编译:#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头文件中
  1. 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指向的内存区,使其能被其他变量使用。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页