C语言
嵌入式开发学习者
嵌入式
展开
-
第7节 enum和typedef分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一枚举类型的使用方法enum 是一种自定义类型enum 默认常量在前一个值的基础上依次加1enum类型的变量只能取定义时的离散值#include <stdio.h>#include <malloc.h>enum Co...原创 2019-01-23 22:32:20 · 148 阅读 · 0 评论 -
第21节 指针基础
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:指针的作用#include <stdio.h>int main(){ int i = 5; int* p = &i; //指针p printf("%d, %08X\n", i, p)...原创 2019-01-26 22:28:40 · 108 阅读 · 0 评论 -
第36节 函数递归与函数设计技巧
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:递归概述? 递归是一种强有力的程序设计方法? 递归的本质为函数内部在适当的时候调用自身? 递归的本质为函数内部在适当的时候调用自身 递归函数C 递归函数有两个主要的组成部分 : 递 归 点 点 – 以不同参数调用 自身 ...原创 2019-01-31 22:30:37 · 135 阅读 · 0 评论 -
第37节 面试题分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:指针运算必考知识点#include <stdio.h>//二维数组名代表 数组首元素//二维数组是以一维数组存在的//指针运算void main(){ int TestArray[5][5] = { {11,12,13...原创 2019-01-31 23:15:18 · 934 阅读 · 0 评论 -
第22节 数组基础
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:数组的概念数组是相同类型的变量的有序集合 数组的大小数组在一片连续的内存空间中存储元素数组元素的个数可以显示或隐式指定#include <stdio.h>int main(){ int a[5] = {1,2}; ...原创 2019-01-27 15:53:38 · 152 阅读 · 0 评论 -
第23节 数组与指针分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:数组的本质 数组是一段连续的内存空间 数组的空间大小为sizeof(array_type) * array_size 数组名可看做指向数组第一个元素的常量指针 第二:指针的运算1.指针是一种特殊的变量 , 与整数的运算规则为 ...原创 2019-01-27 16:52:49 · 188 阅读 · 0 评论 -
第24节 C语言中的字符串
------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:C 语言中的字符串? 从概念上讲 ,C 语言中没有字符串数据类型? 在C 语言中使用字符数组来模拟字符串? C 语言中的字符串是以’\0’ 结束的字符数组? C 语言中的字符串可以分配于栈空间 ,堆空间或者只读存储区#include <s...原创 2019-01-27 20:21:18 · 193 阅读 · 0 评论 -
第25节 指针数组和数组指针分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:数组类型:? C 语言中的数组有自己特定的类型? 数组的类型由 元素类型 和 数组大小 共同决定 例 :int array[5] 的类型为int[5] 定义数组类型:? C 语言中通过typedef 为数组类型重命名 ...原创 2019-01-27 21:57:20 · 100 阅读 · 0 评论 -
第26节 多维数组和多维指针
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:指向指针的指针? 指针变量在内存中会占用一定的空间? 可以定义指针来保存指针变量的地址值int main(){ int a = 0; int* p = NULL; int** pp = NULL; pp = &...原创 2019-01-27 23:24:37 · 88 阅读 · 0 评论 -
第27节 数组参数和指针参数分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:为什么C 语言中的数组参数会退化为指针 ? 退化的意义: C 语言中只会以值拷贝的方式传递参数#include <stdio.h>#include <malloc.h>void f(int* p){ *p =...原创 2019-01-28 20:41:31 · 154 阅读 · 0 评论 -
第28节 函数与指针分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:函数类型? C 语言中的函数有自己特定的类型? 函数的类型由 返回值 , 参数类型 和 参数个数 共同决定 例 :int add(int i, int j) 的类型为int (int, int)? C 语言中通过typedef 为函数类...原创 2019-01-28 21:36:24 · 143 阅读 · 0 评论 -
第29节 动态内存分配
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:为什么使用动态内存分配? C 语言中的一切操作都是基于内存的? 变量和数组都是内存的别名 , 如何分配这些内存由编译器在编译期间决定 定义数组的时候必须指定数组长度 而数组长度是在编译期就必须决定的需求 :程序运行的过程中 ...原创 2019-01-28 22:04:29 · 140 阅读 · 0 评论 -
第30节 程序中的三国天下
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:程序中的栈? 栈是现代计算机程序里最为重要的概念之一? 栈在程序中用于维护函数调用上下文 , 没有栈就没有函数 ,没有局部变量? 栈保存了一个函数调用所需的维护信息 函数参数 , 函数返回地址 局部变量 ...原创 2019-01-29 20:33:55 · 122 阅读 · 1 评论 -
第31节 程序的内存布局
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:程序的内存布局 ? 各个段的作用? 堆栈段在程序运行后才正式存在 , 是程序运行的基础? .bss 段存放的是未初始化的全局变量和静态变量? .text 段存放的是程序中的可执行代码? .data 段保存的是那些已经初始化了的全局变量和...原创 2019-01-29 20:55:24 · 125 阅读 · 0 评论 -
第32节 野指针和内存操作分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:初识野指针? 野指针通常是因为指针变量中保存的值不是一个合法的内存地址而造成的? 野指针不是NULL 指针 , 是指向不可用内存的指针? NULL 指针不容易用错 , 因为if 语句很好判断一个指针是不是NULL C语言中没有任何手段可以判断一...原创 2019-01-29 21:48:22 · 175 阅读 · 0 评论 -
第33节 认清函数的真面目
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:函数的由来程序 = 数据 + 算法 函数的意义C语言中的模块化 第二:面向过程的程序设计? 面向过程是一种以过程为中心的编程思想? 首先将复杂的问题分解为一个个容易解决的问题? 分解过后的问题可以按照步骤一步步...原创 2019-01-30 21:08:24 · 127 阅读 · 0 评论 -
第34节 可变参数分析与宏分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:? 如何编写一个可以计算n 个数平均值的函数#include <stdio.h>float func(int array[], int size){ int i = 0; float avr = 0; ...原创 2019-01-30 21:54:27 · 124 阅读 · 0 评论 -
第20节 #和##运算符使用解析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删. 第一:# 运算符# 运算符用于在预编译期将宏参数转换为字符串#include <stdio.h>#define CONVERS(x) #xint main(){ printf("%s\n", CONVER...原创 2019-01-26 21:07:57 · 144 阅读 · 0 评论 -
第19节 #pragma预处理分析 和 内存对齐
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:#pragma简介? #pragma 是编译器指示字 , 用于指示编译器完成一些特定的动作? #pragma 所定义的很多指示字是编译器和操作系统特有的? #pragma 在不同的编译器间是不可移植的 预处理器将忽略它不认识的#pragma ...原创 2019-01-26 20:42:06 · 200 阅读 · 0 评论 -
第18课 - #error和#line
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删. #error的用法#error 用于生成一个编译错误消息 ,并停止编译 #error message注意:message 不需要用双引号包围#error 编译指示字用于自定义程序员特有的编译错误消息...原创 2019-01-26 19:35:05 · 164 阅读 · 1 评论 -
第1节 基本数据类型分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。 在不同的系统上,这些类型占据的字节长度是不同的在32 位的系统上char占据的内存大小是 1 个byteshort 占据的内...原创 2019-01-22 22:18:03 · 190 阅读 · 0 评论 -
第2节 auto,register,static分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一: auto,static,register 分析 auto 变量存储在程序的栈中 , 默认属性 static 变量存储在程序静态区中 ...原创 2019-01-22 22:24:59 · 152 阅读 · 0 评论 -
第3节 if,switch,do,while,for分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:if和switch语句#include <stdio.h>void f1(int i){ if( i < 6 ) { printf("Failed!\n"); } else if( ...原创 2019-01-23 20:27:19 · 245 阅读 · 0 评论 -
第4节 goto,void,extern,sizeof分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一goto 副作用分析#include <stdio.h>void func(int n){ int* p = NULL; if( n < 0 ) { goto STATUS; }...原创 2019-01-23 21:05:21 · 215 阅读 · 0 评论 -
第5节 const和volatile分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:1.const 修饰变量 在C 语言中const 修饰的变量是只读的 , 其本质还是变量 const 修饰的变量会在内存占用空间 本质上const 只对编译器有用 ,在运行时无用 通过取地址符,改变地址里面的值#include &l...原创 2019-01-23 21:34:58 · 126 阅读 · 0 评论 -
第6节 struct和union分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:有结构体产生柔性数组柔性数组即数组大小待定的数组 C 语言中结构体的最后一个元素可以是大小未知的数组 C 语言中可以由结构体产生柔性数组#include <stdio.h>#include <malloc.h>typ...原创 2019-01-23 22:26:14 · 120 阅读 · 0 评论 -
第8节 注释符号
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删. 注释规则小结编译器会在编译过程删除注释 , 但不是简单的删除而是用空格代替编译器认为双引号括起来内容都是字符串 , 双斜杠也不例外 “/*……*/”型注释不能被嵌套 第一:空格代替#include ...原创 2019-01-24 20:00:33 · 246 阅读 · 0 评论 -
第9节 接续符和转义符
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.接续符(\) 接续符的使用 :编译器会将反斜杠剔除 , 跟在反斜杠后面的字符自动解到前一行在接续单词时 , 反斜杠之后不能有空格 , 反斜杠的下一行之前也不能有空格接续符适合在定义宏代码块时使用 第一:#include <stdio....原创 2019-01-24 20:38:29 · 130 阅读 · 0 评论 -
第10节 单引号和双引号
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.单引号和双引号C 语言中的 单引号 用来表示 字符常量C 语言中的 双引号 用来表示 字符串常量第一:#include <stdio.h>int main(){ char* p1 = 1 ;//十进制 指向地址1 ...原创 2019-01-24 21:01:17 · 235 阅读 · 0 评论 -
第12节 位运算符分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删. 在C 语言中的位运算符右移 >>左移 <<取反 ~按位异或 ^按位或 |按位与 左移n 位相当于乘以2 的n 次方 ,但效率比数学运算符高右移n 位相当于除以2 的n 次方 , 但效率比数学运算符高 第一:...原创 2019-01-24 21:25:15 · 115 阅读 · 0 评论 -
第11节 逻辑运算符使用分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:逻辑运算符&&,|| 和! 短路规则 :|| 从左向右开始计算 , 当遇到为真的条件时停止计算 , 整个表达式为真 ; 所有条件为假时表达式才为假 。&& 从左向右开始计算 , 当遇到为假的条件时停止计算 , 整个...原创 2019-01-24 21:55:15 · 109 阅读 · 0 评论 -
第13节 ++,--操作符使用分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:#include <stdio.h>int main(){ int i = 3; //5+5+(++i) int x = (++i)+(++i)+(++i); printf("x=%d\n...原创 2019-01-24 22:26:40 · 105 阅读 · 0 评论 -
第14节 优先级和类型转换分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一: 警示 : 易错的优先级错误:#include <stdio.h>#include <malloc.h>typedef struct _demo{ int* pInt; float f;} De...原创 2019-01-24 23:03:38 · 116 阅读 · 0 评论 -
第15节 编译过程简介
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:预编译•处理所有的注释 , 以空格代替• 将所有的#define 删除 , 并且展开所有的宏定义• 处理条件编译指令#if, #ifdef, #elif, #else, #endif• 处理#include , 展开被包含的文件• 保留编译器需...原创 2019-01-24 23:14:12 · 142 阅读 · 0 评论 -
第16节 宏定义与使用分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:定义宏常量可以定义常量和路径 定义宏表达式? #define 表达式给有函数调用的假象 , 却不是函数? #define 表达式可以比函数更强大? #define表达式比函数更容易出错 #include <stdio...原创 2019-01-26 00:33:39 · 99 阅读 · 0 评论 -
第17节 条件编译使用分析
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:? 条件编译的行为类似于C 语言中的if…else? 条件编译是预编译指示命令 ,用于控制是否编译某段代码 ,可以 用命令行改变变量#include <stdio.h>//命令行 可以随意改变C的值//gcc -DC=1 test...原创 2019-01-26 18:15:57 · 112 阅读 · 0 评论 -
第35节 函数调用行为
-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.第一:活动记录? 活动记录是函数调用时用于记录一系列相关信息的记录 临时变量域 : 用来存放临时变量的值 , 如 k++ 的中间结果 局部变量域 : 用来存放函数本次执行中的局部变量 机器状态域 : 用来保存调用...原创 2019-01-30 22:01:41 · 197 阅读 · 0 评论