C总结复习(二)

一.运算符

 /,%,++,--,!=,&&,||,优先级见书;常见:[]()->.    >    后置++--     >    前置++--   +-&*~!sizeof()  >    类型转换      >    算术运算*\%+-

math.h:floor(x),不大于x的最大整数;fabs(x),|x|;

exp(x),e的x次幂;log(x);log10(x);

pow(x),x的y次幂;sqrt(x)平方根;sin(x);cos(x);tan(x);

二.结构

if else;switch-case;switch(){case 0: ;break;case 1: ;break;....default: ;}

while(){};do{}while();for(;;){}

三.数组

一维数组 int iA[5];或者#define N 5......int iA[N];但不能动态定义引用iA[i];

二维数组列大小定义时不能省略。

四.函数

类型 函数名(行参)

{

参数声明

执行

}

1.有的时候不把声明放前面会报错的。2.函数调用时注意函数声明。

3.变量作用域:局部变量,自动变量(默认),外部变量 extern,静态变量 static(全局),寄存器变量 register(适用于循环)。

4.外部函数extern,内部函数static 区别是局限于本文件。

五.指针(重难点)

32位机指针变量地址4字节即32位

int *p1=0;...if(p1!=0)  *p1=200;(编程规范)

指针运算:+或者- 运算p+/-i,计算p指的类型字节数

计算p1-p2结果为p1p2相差字节数除以p1所指类型字节数,p1p2指向相同数据类型

二维数组:行地址:a,a+i1/&a[i1]/&*(a+i1)

列地址:*a,*(a+i1)/a[i1]

指针数组:int *p[3];可以指向二维数组,每个元素是行地址p[i]=a[i];

指向指针的指针:char **ppc;int *p[3];p,ppc就是指向指针的指针。作用:移动指针开销比移动数据小。

指针做函数参数void func(int *p1,int *p2){}间接访问

数组名做函数参数,返回指针值的函数(注意不要返回已释放空间),指向函数的指针(C++虚函数实现机制)

字符串:可以含零个或多个字符;字符串结束标志‘\0’,所以定义数组长度比输入字符串长;scanf输入字符串不能含空格,否则以空格结束字符串;

字符串函数:输出:int puts(const char *pc);完全可以由printf代替;写错误返回-1(EOF),否则返回非负数;

输入:char *gets(char *pc);输入到字符数组中,直到遇到换行符或文档结束符,丢弃换行符或结束符,添加空字符;pc必须是字符数组名或指向字符数组的指针变量;

若成功返回pc,若直接遇见换行符或结束符,返回空指针;输入超过长度,会出现内存写问题;

int strlen(const char *pc);返回第一个‘\0’之前的有效字符个数;

char *strcat(char *pc1,const char *pc2);返回pc1;pc1对应的字符数组应定义足够长度(>=strlen(pc1的)+strlen(pc2的)+1);

char *strcpy(char *pc1,const char *pc2);返回pc1;

int strcmp (const char *pc1,const char *pc2);按照ascii码比较,pc1>pc2时返回正数;

char *strstr(const char *pc1,const char *pc2);查找第一次出现pc2的地址;若不出现返回空指针;

main函数参数int main(int argc,char *argv[]){}

动态空间管理:“stdlib.h"

1.malloc(unsigned int size);

2.calloc(unsigned int num,unsigned int size);开辟字节数num*size;

3.realloc(void *ptr,unsigned int size);重新定义开辟空间;

4.free(void *ptr);free((void *)pf1);简写free(pf1);

检查空间申请是否成功:pv=malloc(10*sizeof(int));if(pv==NULL) exit(0);...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值