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‘

}

时间: 2024-10-13 01:39:15