首页 > 代码库 > C总结

C总结


格式化描述串:
char   %c;
short int  %hd;
int  %d;
long int   %ld;
float  %f;
double  %lf;
 
枚举:
例  enum weekday{Mon, Tue, Wed, Thr, Fri, Sat, Sun} a, b, c;
weekday是枚举名   a, b, c是枚举变量名 
总结: 1)可以代替连续的整形的宏定义,增强代码的可维护性
           2)常用在switch语句
 
一元否定运算符
bool valid = false;
if(!valid)    //双重否定,即肯定。 等同于if(valid == 0)
!valid 和valid == 0 两个表达式等价
 
congtinue 用于循环体内部,作用是结束本次循环,开始执行新的循环
break 用于 switch 结构,作用是跳出 switch 结构;跳出循环不在进行新的循环,执行循环体后面的语句,如果有多存循环,只跳出break所在这一循环
return 跳出当前的函数,本函数中return后面的语句不再执行

 
函数
函数声明 函数调用 函数定义
在(.h)里进行函数原型的声明  在.c或.cpp文件里进行函数的实现
void  空类型 用在不需要值的地方
向函数传递参数的三种方式
1)传值      2) 传地址      3)传引用
 
指针(8个字节)
指针也是一个变量,它的值是另外一个变量的地址,指针是存放内存地址的变量
char *p = &aChar 
p  指针变量本身的名字    * 表示p是一个指针变量    &取地址运算符
 =  把变量aChar的地址编号 赋给指针变量p
指针P 里存储的是字符变量aChar的地址编号,
char*   指针p 变量的类型,char代表指针指向的变量的类型
 
指针变量
值就是个地址编号
可以改变 存储一个新的地址,指向另外的变量
多个指针可以有同样的值,多个指针指向同一个变量
 
通过指针访问指针指向的变量
*p放在=右边 读取P只想的变量的值        *p放在=左边 给指针p指向的变量 写入内容
 
指针做函数的参数
传值调用:形参是实参的拷贝,改变形参后 实参值不改变
 
三目运算符
return(x < y ? x : y)   
表达式1 ? 表达式 2: 表达式 3
若表达式1为真,则返回表达式2
若表达式1为假,则返回表达式3
 
开辟一个堆空间(malloc)  里面的变量只有地址
开辟例子:int*INT = (int *)malloc(sizeof(int))
最后需要手动释放(free) 
变量前加 strtic 是声明为静态存储区
栈:又操作系统自动分配释放
栈:又程序员分配释放
 
数组
数组的名字就是数组第一个元素的内存地址,数组首地址(数组名字的值和数组的首地址值一样)    可以通过下标和指针访问数组元素
指针数组(数组中每个元素内部存放的是地址编号)
 
参数传递
传指针调用 传的是地址;通过形参(变量的地址编号)改变实参指向的变量的值
 
指针常量
变量前加上const 就变成了常量
 
字符串
用到时 需在头文件申明 #include "string.h"文件
\0   作为结束标志                  %s  输出
常用的字符串操作函数:   比较  strcmp()   长度  strlen()   链接  strcat()   拷贝 strcpy()
 
结构体
typedef: 给已有的类型起一个别名
 
结构体访问
访问数组的某个元素 用数组下标
访问结构体的某个成员,用 成员访问运算符    
内存分配法:找到最大字节的变量类型,一次从上往下分配内存,分配到相应类型时 所花图中数字要能整出当前类型的字节数     
 
预处理
程序运行过程:   预编译---编译---链接---执行
宏替换
#define(最好都用大写字母)
替换函数
#define  max(A, B)    ((A) > (B) ? (A) : (B))     宏替换的参数都要加上括号
除了最后大括号的结束行,其余都要加上   "\"
例:
#define exchangValue(x, y)
{
     int temp = x;
     x = y;
     y = temp‘
 } 

C总结