![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言一些基础与提升
会搬代码的小胖墩
快乐很简单
展开
-
NO1.基本数据类型
数据类型是什么?数据类型就是固定内存大小的别名,是创建变量的模子。常见的数据类型有哪些?大小为多大?常见的类型有char(一个字节)short(两个字节)int(四个字节)long(四个字节)float(四个字节)double(八个字节)在不同的系统中相同的数据类所代表的内存大小可能不一样,如下表:...原创 2018-06-15 20:14:24 · 288 阅读 · 0 评论 -
NO14.#和##操作符使用分析
# 的用法: #运算发用于在预处理期将宏参数转化为字符串,只在宏定义中有效,编译器不知道#的转换作用 实例: 经预处理之后代码成为:printf("%s\n","Hello World!"); ##的用法: ## 运算符用于预处理期粘连两个标识符,连接作用是在预处理完成de的,因此只在宏定义中有效,编译器不知道##的连接作用 实例: ...原创 2018-08-12 15:59:02 · 105 阅读 · 0 评论 -
NO13.#pragma使用分析
#pragma用于指示编译器完成一些特定的动作,所定义的很多指示字使编译器特有的,在不同的编译器是不可移植的 (注:预处理器会忽略他不认识的#pragma指令,不同的编译器可能用不同的方式解释同一条#pragma指令) 使用说明一: 使用说明二: 区别在于效率和兼容性上,#ifndef 是被c语言支持的无论在什么编译器上都可以实现,效率低一些,而#pragma的参数once需...原创 2018-08-12 15:34:40 · 215 阅读 · 0 评论 -
NO12.#error和#line使用分析
#error的作用是用于生成一个编译错误信息 用法 #error message (注message不需要用双引号包围) #error编译指示字用于自定义程序员特有的编译错误消息 #warning用于生成编译警告 #errorde的用法实例: #line用于强制指定新的行号和编译文件名,并对源程序的代码重新编号 #line用法实例: ...原创 2018-08-10 21:47:57 · 127 阅读 · 0 评论 -
NO11.条件编译使用分析
条件编译的行为类似于C语言中的if...else..根据条件来确定是否进行相关编译, 要知道条件编译是预编译指示命令,在进行编译已经选择要编译内容,及根据选择编译某段代码 预编译器根据条件编译指令有选择的删除代码,编译器不知道代码分支的存在 可以通过命令行定义宏: gcc -Dmacro=value file.c or gcc -Dmacro file.c #include...原创 2018-08-10 21:36:59 · 123 阅读 · 0 评论 -
NO10.宏定义与使用分析
#define 是预处理器处理的单元实体之一 #define定义的宏可以出现在程序的任意位置 #define定义之后的代码都可一使用这个宏 #define 定义的宏变量本质为字面量 宏表达式被预处理处理,编译器不知道宏表达式的存在;用“实参”完全替代形参,不进行任何运算;没有任何调用开销,因为在预处理的时候,所有使用宏的地方全部被替代;不能出现递归定义 强大的内置宏: ...原创 2018-08-10 21:17:23 · 123 阅读 · 0 评论 -
NO9.enum,sizeof,typedef分析
enum的分析:enum是C语言中的一种自定义类型,enum的值可以根据需要自定以整形值,第一个定义的enum默认值为0,而且默认情况下eum的值是在前一个定义的值的基础上加1,enum类型的变量只能取定义时的离散值。sizeof的分析:sizeof是编译器的内置指示符,用于计算类型或变量所占的内存大小,sizeof的值在编译期就已经确定的sizeof用于类型 sizeof(type) ...原创 2018-06-25 18:18:35 · 113 阅读 · 0 评论 -
NO8.struct和union分析
struct和柔性数组:C语言中的struct可以看作变量的结合柔性数组即数组大小待定的数组,C语言中可以由结构体产生柔性数组,原因是C语言中结构体的最后一个元素可以是大小未知的数组...原创 2018-06-25 16:01:34 · 158 阅读 · 0 评论 -
NO7.const和volatile
const 只读变量:const修饰的变量是只读的,本质还是变量const修饰的局部变量在栈上分配空间const修饰的全局变量在全局数据区分配空间const只在编译器有用,在运行期无用const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边在现代C语言编辑器中,修改const全局变量将导致程序崩溃。注意:标准C语言编辑器不会将const修饰的全局变量存储于只读存储区中,而是...原创 2018-06-25 14:35:17 · 118 阅读 · 0 评论 -
NO6.goto和void分析
goto: goto的用法goto 标号名;通过关键字goto无条件指定循环跳转到某个标号名。标号名命名规则遵循变量名命名规则: 由数字,字母和下划线组成, 并且首字母只能与字母和下划线开头,不能与数字开头,同时不能与保留字一样,还有一些C语言自己留着用的特殊符号一样。#include "stdio.h" int main(void) { test_goto_loop: /* ...原创 2018-06-25 13:03:37 · 104 阅读 · 0 评论 -
NO5.变量的属性和存储位置
变量属性使用到的几个关键字auto static register extern const volatile auto:这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量,最常用,因为所有变量默认为就是auto类型的static:这个关键词可以使变量变得老实,只有当程序改变这个变量的时候,这个变量才...转载 2018-06-16 10:07:52 · 133 阅读 · 0 评论 -
NO4.类型转换
一句话就是内存小的类型向内存大的转化时安全,内存大的向内存小的类型转换时会发生截断。(主要是编译器类型检查比较宽松)不可以转换的时候,编译器会提示...原创 2018-06-15 21:58:25 · 156 阅读 · 0 评论 -
NO3.浮点数的秘密
浮点数在内存中存储方式三段:符号位,指数位,小数位浮点数的转换 1.将浮点数转换为二进制 2.用科学计数法表示二进制浮点数 3.计算指数偏移后的值float类型:1位符号位,8位指数位,23位尾数位 ( 指数要加上127的偏移数) 31 23-30 0-22double类型:1位符号位,11位指数...原创 2018-06-15 21:39:05 · 129 阅读 · 0 评论 -
NO2.有符号和无符号类型数据的一些知识
有符号和无符号数据的一些知识点在计算机中有符号数据最高位为1表示为负数,最高位为0表示为整数,在计算机内部通过补码来表示有符号数正数的补码使整数本身,负数的补码是其绝对值给位取反后加1。用原码表示为无符号数有符号数和无符号数字在一起使用会出现什么结果?有符号数会被看作无符号数,然后和另外一个无符号数进行计算tip:无符号数最小为0.如果再减1就变成最大数...原创 2018-06-15 20:44:48 · 236 阅读 · 0 评论 -
NO15.指针的本质分析
变量:程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段变量? 可以 *号的意义:在指针声明时,*号表示所声明的变量为指针;在使用时,*号表示取指针所指向的内存空间中的值 指针是变量,因此可以声明指针参数,当一个函数体内部需要改变实参的值,则需要使用指针参数,函数调用时实参值将赋值到形参,指针适用于复杂数据类型作为参数的函数中 指针时c语言中的一种特别...原创 2018-08-12 16:44:05 · 114 阅读 · 0 评论