- 博客(32)
- 资源 (1)
- 收藏
- 关注
原创 单片机之初步了解
单片机四个P口的作用:P0口有二个功能: 1、外部扩展存储器时,当做数据/地址总线 2、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。 P1口只做I/O口使用:其内部有上拉电阻。 作为输入口使用,应区分读引脚和读端口。P2口两个功能1、扩展外部存储器时,当作地址总线使用 2、做一般I/O口使用,其内部有上拉电阻; P3口有两个功能:
2017-01-18 18:26:05
1220
原创 对单词的逆序
以i from shanghai为例 输出 shanghai from i#include #define MAX_SIZE 1024void reverse_string(char *src, int len){ int i; char temp; for(i = 0; i < len / 2; i++) { temp = *(src
2016-12-21 17:39:12
488
原创 typedef与#define的区别
#define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。也许您已经注意到#define 不是语句 不要在行末加分号,否则 会连分号一块置换。typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名。举个例子:typedef (int *) pint;
2016-12-21 17:22:56
326
原创 宏定义与条件编译的用处
#define 定义宏 #undef 取消已定义的宏 宏定义常量与命令可以避免幻数 在宏定义命名时候应该尽量清楚表明其用途。函数型宏定义的有点:尽管其和真正的函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧,传参,传返回值等一系列工作
2016-11-25 22:39:32
3128
1
原创 对复合数据类型的细节了解
1 结构体作用:在编程中我们经常要传送的不是简单的字节流(char型)而是多种数据结合起来的一个整体,其表现形式是一个结构体注意事项:在结构体中定义多个数据类型时 ,如果最大的数据类型>=4字节 统一以“字”为对齐,struct node{ char a; int b; char c; };struct node link;int coun
2016-11-24 23:28:40
394
原创 关键字的作用
1.我们知道局部变量是存放在栈区的,如果用static修饰的话 ,变量就会存放在静态数据区,生命周期延长到了整个程序执行结束。那么修饰的是全局变量呢? 这个和修饰函数名时作用一致,只能在本文件中访问不能再其他文件中访问,函数只能在本文中被调用,不能再其他文件中调用。2.那么又有了一个问题 如果我想调用不是在本文件内声明的变量或者函数该怎么办 ? 应该用extern修饰,表示该函数或
2016-11-23 21:41:50
644
原创 函数的一些小知识
当我们在调用函数时候我们应该知道系统一共进行了哪些操作1.通过函数名找到函数的入口地址(函数名是一个指针常量 保存函数的地址)2.给形参分配空间3.传值:把实参变量对应空间的值传递给形参变量的对应空间4.执行函数体语句5.函数返回值并释放空间所以我们在写函数时候都应该注意 不能通过函数形参来改变实参的值 那么当我我们想要修改的时候 就应该传实参变量对应的空间的地址
2016-11-21 23:25:02
322
转载 对malloc rolloc calloc的用法以及区别
在防止野指针时候 我们有用到过malloc来给指针分配空间 下面了解m r c的用法以及区别 z转载出处:http://blog.youkuaiyun.com/wjy2016/article/details/51944926malloc()用法:需要包含头文件:#include函数声明:void *malloc(unsigned size);说明:malloc 向
2016-11-18 21:32:11
582
原创 对数组名与指针的认识
char *p 这里的*与char一样 定义了变量p为字符型指针。printf(%s“,*p); 这里的* 称之为间接运算符 不过我个人更喜欢称呼为 取值运算符*p:找到p变量里保存的地址对应的内存空间。p++:对p对应的内存空间的值加1。(*p)++:对p指向的内存空间的值加1。*(ptr + i)=ptr[i]; 运算符[] = *() 不过值得注意的是 等式两边虽然成立
2016-11-15 18:18:05
287
原创 避免野指针的方法--养好良好的编程习惯
首先 我们需要来了解什么是野指针:未初始化的指针,系统给了一个随机地址 导致了内存泄露的错误 这也是最常见的段错误之一。避免野指针的方法最好就是养成良好的编码习惯:1: 当指针没有指向的时候 令其指向空 char *p = NULL;2:当向指针指向的空间赋值时,注意检查有无分配空间。 *ptr = malloc(100)=malloc(sizeof(char)*10
2016-11-14 21:31:44
324
原创 求20000以内的自守数
25的平方为625 76的平方为5776 9376的平方为87908376很明显我们不能在算出结果后截取相应的位数 同样的 我们也不需要每个乘数的积 只需要相应位数即可
2016-11-12 21:39:41
3261
转载 scanf的一些小细节
格式字符串格式字符串的一般形式为: %[*][输入数据宽度][长度]类型其中有方括号[]的项为任选项。各项的意义如下。1) 类型表示输入数据的类型,其格式符和意义如下表所示。格式字符意义d输入十进制整数o输入八进制整数x输入十六进制整数u输入无符号十进制整数f或e
2016-11-11 21:37:49
709
原创 C语言初学--对全局变量和局部变量的理解
首先 在这之前我们应该要知道进程虚拟空间: 系统程序中访问的内存地址不是实际的物理内存地址,而是一个虚拟地址,然后由操作系统将这个虚拟地址映射到适当的物理内存地址上。系统给了我们4个g的虚拟地址空间 其中一个1个g给了内核 3个g给了我们用户 而这三个g我们分为四个区1 栈空间: 这里面有局部变量 函数形参 自动变量 、(这个是由系统管理 并且先进来的后出去 ,简称先进后出)2堆空间:
2016-11-10 22:13:03
495
原创 c语言初学--计算字符串中数字的最大长度并提取 以及输入两个子串 提取分别以这为开头和结尾的字符串
计算字符串中数字的最大长度并提取提取以输入子串为开头和结尾的字符串
2016-11-08 21:03:20
1814
原创 C语言初学---对位运算符的认识
位与运算: “&”是双目运算符 其功能是参与运算的两个数字对应的二进制位相与 ,只有对应的两个二进制均为1时 结果位才为1 ,否则为0 ,参与运算的数以补码方式出现例如 9 & 5 0000 1001 & 0000 0101 结果为 0000 0001应用: (1)清0特定位 (2)某数中指定位 位或运算:"|" 双目运算符 其功能是参与运算的两个数字对应的二进制位或 ,
2016-11-07 22:04:14
554
原创 对i++和++i的理解
i++ 先使用后增加++i 先增加后使用实际上这我们需要对这两句话做点补充 先使用等到语句结束时候再增加 对++i同样是这样 我们最熟悉的结束标志莫过于“;”了不过还有其他两种 “,’” 与 函数的括号举几个简单的例子;简单的定义一个变量 i = 2;num = (i++)+(i++)+(i++)+(i++); 这时候 num = i + i+ i +i =8
2016-11-06 22:03:39
618
原创 C语言初学--对变量的认识
变量类型:int - 4字节(1字节=8bit) short -2字节 float -4字节 double -8字节 char -1字节 (任意类型)* - 4字
2016-11-05 22:01:11
342
转载 对gcc一些优化项目的具体说明
转载出处:http://blog.youkuaiyun.com/gatieme/article/details/48898261 http://blog.chinaunix.net/uid-14163325-id-189617.htmlGCC编译器优化选项介绍:GCC编译器在目前是不是用最多的编译器也相去不远,尤其在嵌入式领域很多编译器
2016-11-04 21:25:02
836
原创 对符号表的初步认识
符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型、作用域以及内存地址。符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。这些信息一般以表格形式存储于系统中。如常数表、变量名表、数组名表、过程名表、标号表等等,统称为符号表。对于符号表组织、构造和管理方法
2016-11-03 18:37:42
9199
原创 linux下对gdb调试器的基本了解
首先通过: gcc -g .----.c -o (重命名)进行编译 g:将调试信息加入到生成的可执行文件 以便于下一步的调试gdb (重命名)(1 )查看源文件 : 在gdb中通过命令list可以查看所有的代码行数 缩写 l 以十行为单位显示 再运行命令list 查看下个十行
2016-11-02 18:18:30
265
原创 linux下gcc库的使用
静态库:.a 文件 执行程序之前加入到执行代码中 优点:运行效率高 代码布局好 缺点:文件体积大 升级麻烦 需要重修编译代码 编译速度慢动态库:.so文件 优点 文件体积小 升级方便 编译速度快 缺点:布局差 运行效率慢 (优缺点都是相对而言。)静态库制作方法: gcc -c 源文件.c ar rcs lib库名.a 目标文件名.o (其中 rc:静态库
2016-11-01 20:27:03
575
原创 数值函数指针变量的认识
int a;整形变量aint *a; 整形指针变量aint **a;整形指针的指针变量int a[10];;整形数组int *a[10];整形指针数组int (*a)[10];整形数组指针变量int (*a)(int); 函数指针变量int (*a[10])(int);函数指针数组int * ( * ( *a )( int ))[10]; 函数指针变量,指向一个形
2016-10-30 20:41:55
314
转载 gcc的优化 静态编译-statir
-O用来开启优化编译选项。-O0:默认模式,不做任何优化。-O1:优化。该模式下对于一个大的函数或功能会花费更多的时间和内存。 在-O1下:编译会尝试减少代码体积和代码运行时间。但是并不执行会花费大量时间的优化操作。-O2:进一步优化.GCC执行几乎所有支持的操作但不包括空间和速度之间权衡的优化。-O2优化等级下,并不执
2016-10-29 20:11:12
942
原创 对linux根目录下各文件夹的初步认识
1./bin普通用户可以使用的命令的存放目录。2./etc全局的配置文件存放目录。3./lost+found 恢复文件存放的位置。当系统崩溃的时候,在系统修复过程中需要恢复的文件,可能就会在这里被找到了,这个目录一般为空。4./mnt临时挂载目录。这个目录一般是用于存放挂载储存设备的挂载目录的,比如磁盘,光驱,网络文件系统等,当我们需要挂载某个磁盘设备的时候,可以把磁盘设备挂载
2016-10-28 16:44:36
425
原创 初学c语言--Linux下的gets命令,对n个数的顺序排列 计算字符串里的单词数 n个数里取m的方法 杨辉三角
Linux下用gets命令会得到警告 ,但对编译并没有影响(计算字符串里的单词数)避免警告可以使用fgets 例子 fgets(str ,1024,stdin)stdin表示键盘输入。对n个数的顺序排列 数组的值可以写1024,要求使用if语句输入n的值小于1024n个数里取m的排列 m个for循环 简化得下次想到了再发,杨辉三角
2016-10-27 22:54:58
455
原创 C语言初学----对圆 y=x^2 以及两者共存图像的输出 对于任意一个数 求出最大公约数
对圆的输出(1)对y=x^2的输出(2)共存(3)公约数(4)问题 如何求高次方的后三位数
2016-10-25 22:01:11
716
linux网络编程
2018-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人