C语言总结的知识点
什么是有效数字?
-------------------------
数据类型
运算符:
函数: 程序结构:
存储结构
内存管理 关键字:
------------------------- C语言:
我认为编程就是对数据操作 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx数据类型xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
基本数据类型:原子数据类型是最小数据单元: 空类型:是所有数据类型的基础。 构造数据类型:在基本数据类型的基础上构造而成的复合数据类型。
############################
基本数据类型:也称为原子数据:最小数据单元
############################
整型变量
种类: short int ,int ,long int
长度: 32位机长度:
注意; 在嵌入式系统中为了兼顾可移植性和效率:
将int的控制在unsigned int和 signed int的交集 整型常量:
开头: 以0和0x开头区分八进制和十六进制
结尾: 为了显示的表达整型数据的类型,在结尾添加L和U分别表示长整型和无符号整型
#####################
浮点型变量
种类: float double long double
长度:
有效数字: 浮点型常量
表现形式:
点分十进制:默认double类型
指数形式: 尾数E指数 3E-
########################
字符型变量:
种类: char
大小:
内容: 字符对应的ASSIC值 字符常量
形式: 用单引号括起一个字符
特殊: 特殊的字符串常量转移字符:\n \t \\ \' ###########################
指针型
指针常量:
数组名: int a[];a为地址常量;
字符串常量: char a[]=“asdf”;a为字符串常量;
C语言中没有专门的字符串常量,利用字符串所在内存的首地址表示该字符串; 指针变量:
定义; 给每个内存单元对应一个编号,利用该编号可以快速方位该内存单元;
大小: 编号就是指针:四字节,内存单元:1字节
关于*:
int *p; *是数据类型一部分
int *p,q; p是指针,q是整型变量
*p: 指针解引用符
关于二维:
二维指针: int **a; 保存变量类型一维指针的地址
二维数组指针: int (*a)[]; 保存变量类型二维数组名
二维指针数组: int *a[]; 是一个数组,元素类型为指针 野指针:
定义: 指针随机指向一块内存:
原因: 指针变量未初始化
指针已被释放
指针被手动free
指针访问越界
########################
枚举型 ####################
空数据类型:
NULL:常量值为0 void *
定义: 数据类型不确定的指针变量
作用: 通过强转可以指向任意数据类型
使用: (void *)malloc(size):用于数据类型转换;
fun(void *a):用于参数传递 ####################
构造数据类型
####################
结构体和数组:
结构体和数组型变量作为形参:
分别是值传递和地址传递;
####################
数组:
定义: 具有一定关系的若干个变量集合
种类: 数值数组,字符数组,指针数组,结构体数组
格式: 数据类型 数组名 数组长度
数组名:地址常量
数组长度:常量
注意: 防止数组访问越界;
初始化:
不初始化:
局部数组不初始化,元素值不确定。
static数组不初始化,默认值零
全局变量不初始化,默认值零
初始化:
全部初始化:定义时初始化。int a[]={,};
部分初始化:初始值比数组长度小,自动赋零。int a[]={};
赋值初始化:定义的时候无数组长度,int a[]={,};
初始化零:
直接赋值为零;int a[]={}; 字符数组和字符串:
char a[]="asdfg";
数组长度:字符个数加一,默认添加\
char *a="asdfg";
字符指针a指向一个字符串常量; 字符串处理函数函数:
赋值:strcpy(),
比较:strcmp(),
求长:strlen().
######################
结构体:
特点:
①用户自行构造
②由不同基本数据类型构成
③定义时不分配空间,定义变量时才分配;
使用:
访问结构体变量的成员:
结构体变量名.成员名
结构体指针->成员名
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx运算符xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
原则:尽量使用括号,阅读更方便;
优先级:大略分:四大天王() [] -> .
单目
双目
例如:*p++和*++p;
*p++;访问p指向的对象,p后移一位;
*++p;访问p后移一位所指向的对象;
数据类型转换:对数据类型进行临时转变,并不改变本身类型;
自动:float-》double char short-》int
强制:(类型名)表达式
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx函数xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
编程的思想:高内聚,低耦合;
格式:返回值类型 函数名 参数 函数体
==============
函数声明:
extern修饰:表示该函数定义在其他源文件中
static修饰:表示该函数只能在本文件内使用
==============
函数调用:
①函数语句
②函数表达式
③函数参数
==============
返回值 =============
函数名:
定义: 是函数指针,是一个函数的入口地址
作用: 用于回调函数(信号注册函数,线程创建函数)
回调函数三个特点:事件触发,自动运行,函数指针
==============
参数:
值传递: 形参和实参是两个变量
地址传递: 通过地址可以访问同一块内存
==============
被调函数向主调函数返回值得三种方式:
.返回值
.地址传递
.全局变量
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx程序结构xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
种类: 顺序结构,分支结构,循环结构
分支结构: if switch
循环结构: while for 跳转语句:
break:跳出循环
continue:跳出本次循环;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx内存管理xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
内存区间分类:栈区 堆区 全局变量及静态变量区/静态存储区 代码区
malloc free
===============
栈区: 此存储方式的变量的分配和释放都是自动进行的;
堆区: 用于动态分配,在程序运行时分配空间 ,用malloc手动申请,手动free释放
静态存储区: 内存在编译时分配好,程序结束才释放例如:全局变量,静态变量,字符串常量。
代码区: 存放程序代码,只读
===============
malloc和free:两个配对使用;
malloc
格式: (void *)malloc(size);
返回值:成功返回申请内存的首地址,失败返回NULL;
free
格式: free(堆区指针)
注意: 不能重复释放 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx存储模型xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
从不同的角度分析:生存周期,作用域,种类;
==========
生存周期:
静态存储:程序运行时就分配存储空间,运行结束才释放内存
动态存储:程序运行时动态分布存储空间,使用完毕立即释放
==========
作用域:
局部变量;
定义;定义在函数模块内部的变量,
作用域;仅在函数模块内部有效
运行周期:局部变量在函数模块进入堆栈式生成,在弹出堆栈时消亡。
全局变量:
定义:定义在所有函数模块之外;
作用域:源文件
使用:可以一次定义,多次声明,声明时加修饰符extern;
==========
五种存储模型: auto register 静态空链接 静态外部链接 静态内部链接
==========
auto(自动)
局部变量默认是auto存储类型 动态存储,作用域函数模块内部,空连接,无默认初始化
===========
register(寄存器) 动态存储,作用域函数模块内部,空连接,无默认初始化
保存在cpu的寄存器中,则变量不能使用取地址符,不能修饰全局变量,长度不大于整型长度。
===========
静态 空连接 static修饰局部变量:静态存储,作用域函数模块内部,空连接,默认初始化零
===========
静态 内部链接 static修饰全局变量:静态存储,作用域函数本文件,内部连接,默认初始化零
===========
静态 外部链接 全局变量:静态存储,作用域源文件 外部链接,默认初始化零 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx关键字xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ypedef define const typedef:为变量类型取一个易记且意义明确的名字
typedef unsigned long uint32
==========
define:
预处理指令,实际就是符号替换。
==========
const;定义常变量
const int a;定义常量a
const int *a;定义*a为常量
int *const a;定义指针常量a
==========
头文件防止重复包含
C语言总结的知识点的更多相关文章
- 【C语言】数组知识点总结
[C语言]数组知识点总结 标签: 数组 2018年04月12日 17:44:4481人阅读 评论(0) 收藏 举报 分类: C语言知识总结(4) 版权声明:本文为博主原创文章,未经博主允许不得转载 ...
- C语言程序设计基础知识点概括
C语言程序设计基础知识点概括 C语言程序设计基础知识点1.函数是C语言的基本构成单位.main函数是C语言程序的唯一入口.2.C语言程序开发过程. 编译过程:将以.c或.cpp结尾的源程序文件经过编译 ...
- [置顶] 单片机C语言易错知识点经验笔记
今天写这一篇文章并不是因为已经想好了一篇文章才写下来,而是我要将这一篇文章作为一个长期的笔记来写,我会一直更新.在进行单片机开发时,经常都会出现一些很不起眼的问题,这些问题其实都是很基础的c语言知识点 ...
- [C语言]易错知识点、小知识点复习(1)
1. 计算机只能识别由0和1组成的二进制指令,需要将用高级语言(如C.C++)编写的源程序(.c..cpp)编译成二进制目标文件(.obj).一个程序可以根据需要写在不同的文件里,编译是以文件为单位进 ...
- C语言偏冷知识点汇总
1.C语言函数声明中参数类型写在右括号后是什么意思?如下代码所示: int add(a, b) int a; int b; { return a + b; } 像这样的声明是什么意思,我测试过在gcc ...
- 计算机等级考试【二级C语言程序设计】知识点整理
*免责声明:本文章中所收集或者引用到的内容的所有版权均为引用内容的原作者所有,本站仅作收集并整理,不承担任何法律责任! *题库收集来源于:[未来教育考试软件2017年版 - 计算机二级 - C语言程序 ...
- C语言面试相关知识点
1.关键字static的作用是什么? 有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这个函数被调用过程中维持其值不变 2)在模块内(但在函数体外),静态的变量可以被模块内所有函数访问,但 ...
- php语言的核心知识点
PHP:脚本语言,网站建设,服务器端运行PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的.面向对象的.解释型的.健壮的.安全的.性能非常之高的.独立于架构的.可移植的.动态的脚本语言 ...
- C语言之数据类型(知识点8)
一.数据类型 1.数据基本类型 (1)整数 ①有符号整形 有符号短整型 short 有符号基本整形 int 有符号长整形 long ②无符号整形 无符号基本整形 无符号短整型 无符号长整型 (2) ...
随机推荐
- SQL Connect By 的例子
看到一个较为通俗易懂的connect by的例子,是百度知道的答案,稍微整理了一下.我自己这样理解:connect by prior "id" = "p_id" ...
- kohana reading session data error(session_start)引起的错误
在项目中碰到一个很奇怪的问题,同一个网站目录下两个项目,手机端访问从A项目切换到B项目,总是报错,session_start抛错,后来排查了很久,终于发现是存储session的时候直接存储的对象,导致 ...
- 1.centos7 安装zookeeper
1.安装jdk 1)查找jdk包: yum search java|grep jdk 2)安装: yum install -y java-1.8.0-openjdk.x86_64 2. 安装ZooKe ...
- python学习:python文件中空格和换行符的捕获和文本文件的转存
0. 背景 之前公司的项目中,需要在嵌入式系统中实现一个http的网页端内容,由于项目历史遗留问题,公司是采用的将html文件转成c语言头文件的方式,每次修改页面端都需要从新编译一下程序,非常的繁琐. ...
- grep常用选项记录
grep: 一.常用选项: -i 不区分大小写针对单个字符 -v 显示不包括查找字符的所有行 -o 只打印出匹配到的字符 -c 显示有多少行被匹配到 -e 可以使用多个表 ...
- Nuxt 2.3.X 配置babel
1. 在package.json中修改运行脚本 添加--exec babel-node 添加之后的效果为:(修改了8/10行) { "name": "nuxt-learn ...
- ctrip-apollo
云端多网卡问题: 参考:https://blog.csdn.net/buyaore_wo/article/details/79847404
- css3制作梯形导航
/*HTML*/<div class="nav"> <a href="javascript:;">首页</a> <a ...
- 3d Max 2014安装失败怎样卸载3dsmax?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- jquery mobile - select and input - horizontal - in same line
控件组合的水平布局 select + input 在同一行 注意jquery mobile 的js 和css 的版本, 一些低版本 估计不支持 <!DOCTYPE html> <ht ...