自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 搞懂C语言动态分配内存给一维数组和二维数组

1、一维数组动态分配内存:int num[5]源码:int main(void){ // 使用动态内存分配一个数组为 int num[5] int *num = NULL; int len = 5; num = (int *)malloc(len * sizeof(int)); for (int i = 0; i < len; i++) { num[i] = i...

2020-04-22 10:26:08 1822

原创 【c语言学习笔记】指针作为参数时的输入和输出特性

1、指针作为函数参数时的输入特性:主调函数分配内存给函数形参的指针,源码如下:#include <stdio.h>#include <string.h>#include <stdlib.h>void fun1(char *ptr){ strcpy(ptr, "abcdefg!");}int main(void){ char buf[1...

2020-04-20 09:48:57 866

原创 C++编译环境下#ifdef __cplusplus extern "C"的功能

#ifdef __cplusplusextern "C"{#endif void test(void);#ifdef __cplusplus}#endif如果是C++编译环境,那么test()函数将按C标准进行编译,这是为了兼容C++编译器。...

2020-04-17 15:25:27 228

原创 关于fread()函数返回值的几个易错点

函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);头文件:stdio.h功能:以数据块的方式从文件中读取相应的内容。参数: ptr:存放读取出来的数据。 size:指定读取文件内容的块数据大小,类型size_t为unsigned int类型。 nmemb:指定读取文件的块...

2020-04-16 15:53:07 3301

原创 C语言往文件内写入随机数并进行排序

该函数以只写的方式打开文本文件RandomSort.txt,使用fscanf()将文件内的"%d\n"形式的数据一个一个取出并存放到buf数组里面,知道结尾处if(feof(fp))为真跳出循环,接着对存放到buf的这些随机数进行从小到大的排序,然后关闭文件并重新以只写的方式打开文本文件RandomSort.txt并将这些数据重新写入,结果如下图(这里只显示一部分数据)。① file_write()函数。② file_read()函数。

2020-04-15 16:46:51 1155 1

原创 STM32F4获取并查看当前系统时钟频率

在进行项目开发的时候有时候需要知道系统各个时钟的频率,可以使用以下两条语句:①RCC_ClocksTypeDef get_rcc_clock;头文件:stm32f4xx_rcc.h功能:定义了一个RCC_ClocksTypeDef结构体类型的结构体get_rcc_clock,该结构体类型有四个成员:SYSCLK_Frequency、HCLK_Frequency、PCLK1_Freq...

2020-04-11 10:12:16 4746 2

原创 linux下为什么说ll是ls -l的别名却可以显示隐藏文件

在网上看到了很多都是说ll命令是ls -l命令的别名,但为什么在用ll命令的时候却可以输出隐藏文件并在末尾添加了一个字符说明该文件的类型,我们先来看看输入命令时所输出的列表信息:ls -l命令:eHunter@eHunter-VirtualBox:~$ ls -ltotal 48drwxr-xr-x 2 eHunter eHunter 4096 2月 12 11:26 Deskt...

2020-04-03 10:33:48 1147

原创 普通局部变量、static局部变量、普通全局变量、static全局变量的区别

普通局部变量和static局部变量:1、① static局部变量在编译阶段就已经分配内存空间了,也就是函数没有调用前它就已经存在了。② 普通局部变量只有运行到定义该变量的时候才会分配内存空间。2、① 当执行完定义该static局部变量的函数体后,该static变量的内存空间不会被释放,只有程序结束时static变量才会自动释放。② 当执行完定义该普通局部变量的函数体后,该普通...

2020-04-02 13:48:01 1607

原创 联合体(union)的使用和分析

程序源码如下:1 #include <stdio.h>23 union Test {4 unsigned char a;5 unsigned short b;6 unsigned int c;7 };89 int main(void)10 {11 union Test test;12 ...

2020-04-01 11:02:19 812

原创 【c语言学习笔记】malloc和free函数

1、函数原型① void *malloc(size_t size)功能:在堆区(动态存储区)分配一块长度为size字节的连续区域的内存空间,用来存放指定的类型,并返回一个指向该内存地址的指针。参数:size为需要分配的内存的大小,单位是byte。返回值:成功返回分配空间的首地址,失败返回空指针NULL。头文件:stdlib.h② void free(void *ptr)功能...

2020-03-31 12:04:15 216

原创 面试常考点:值传递和地址返回在堆区(Heap)应用的三种易错点

1、指针变量作为参数进行值传递给函数的形参,并在堆区(Heap)进行内存分配和赋值程序源码: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void allocation(int *tmp) 5 { 6 tmp = (int *)malloc(sizeof(int)); ...

2020-03-30 10:32:42 301

原创 教你用Photoshop画点阵图配合Oled屏幕进行开发显示

前些章节讲了Oled屏幕上想要显示字符、中文和图片的话需要用到PCtoLCD2002这个软件,这次就来说一下如何用Photoshop cs6这个软件来画点阵图,而且Photoshop cs6软件的功能也是比较强大的。1、打开软件Photoshop cs6,界面如下:2、点击左上角的 "文件" -> "新建"选项,也可以使用快捷键 "ctrl+n",如下图红框:...

2020-03-27 15:51:18 2096

原创 如何理解二级指针作为指针数组的形参

二级指针是指向指针的指针,因为指针存放的是地址,所以二级指针是指向一级指针本身的地址,而非一级指针所指向的某块内存的地址。二级指针作为指针数组形参的示例代码如下: 1 #include <stdio.h> 2 3 //void display(char *ptr[100], int len) // 第三种数组指针作为形参的写法 4 //void displ...

2020-03-26 10:07:59 887 2

原创 【c语言学习笔记】int main(int argc, char *argv[])

int main(int argc, char *argv[])和int main(int argc, char **argv)是等价的参数:argv是存放命令行参数的指针数组,类型是char *argc是命令函参数的数量,程序名字本身算一个参数,类型是int型代码如下(基于Linux系统): 1 #include <stdio.h> 2 3 int ...

2020-03-25 13:44:20 517

原创 Linux下Vim编辑文件时出现Found a swap file by the name ".test.c.swp"

我在Linux系统下使用Vim编写test.c文件时出现了以下问题信息:E325: ATTENTIONFound a swap file by the name ".test.c.swp" owned by: eHunter dated: Mon Mar 23 18:07:33 2020 file name: ~eHunter/project/te...

2020-03-24 13:48:54 870

原创 【c语言学习笔记】返回局部变量地址和全局变量地址的区别

1、返回局部变量的地址 1 #include <stdio.h> 2 3 int *local_address(void) 4 { 5 int num; 6 printf("Sub function address: %p\n", &num); 7 return &num; 8 }...

2020-03-24 08:40:13 881

原创 【c语言学习笔记】数值交换用值传递和地址传递的区别

1、用值传递进行数值交换 1 #include <stdio.h> 2 3 void swap_variable(int numa, int numb) 4 { 5 int tmp; 6 tmp = numa; 7 numa = numb; 8 numb = tmp; 9 ...

2020-03-23 11:40:47 534

原创 详细解析OLED及相关代码,基于SH1107的1.3寸OLED屏

前言:如果有什么问题的话欢迎大家在下方留言,或者私信我。最近在做一些基于SH1107的1.3寸OLED屏幕相关的项目,现在对一些相关的命令、地址和代码做些总结。一、显示地址1、SH1107最大是支持128x128的矩阵面板的,现在以分辨率为64(H)x128(V)为准进行说明H:Horizontal(横),即横向为64个像素点V:Vertical(竖),即竖向为128个像...

2020-03-20 23:07:08 9320 7

原创 【c语言学习笔记】数组名作为函数形参时的误区

当数组名作为函数的参数时,该函数的形参只为指针。 1 #include <stdio.h> 2 3 void pprintf1(int ptr[]) 4 { 5 int len1 = sizeof(ptr); 6 int len2 = sizeof(ptr[0]); 7 printf("len1 = %...

2020-03-11 11:44:40 635

原创 【c语言学习笔记】简单易懂的指针数组分析

指针数组:它是一个数组,数组里面的每个元素都是一个指针类型。例如:int *ptr[10],ptr是一个包含10个int *指针类型的数组。 1 #include <stdio.h> 2 3 int main(void) 4 { 5 int num[3] = {2, 4, 6}; 6 int *ptr[3]; 7 ...

2020-03-11 10:47:25 202

原创 【c语言学习笔记】sizeof和strlen的区别和分析,详细易懂

sizeof的功能是计算一个数据类型的大小,这个类型可以是数组、函数、指针、对象等,单位为字节,它的返回值是size_t类型,也就是unsigned int类型,是一个无符号整数。注意:sizeof不是一个函数,它是一个运算符,所以它不需要包含任何头文件。strlen的功能是计算一个指定字符串的长度,函数原型是size_t strlen(const char *s),它的返回值是size_t类...

2020-03-05 11:19:08 506

原创 【c语言学习笔记】随机函数rand()和srand()、time()的配合使用

使用产生随机数函数rand()前需要先设置产生随机数的种子,即srand()函数函数原型:int rand(void)头文件:#include <stdlib.h>参数:无返回值:int类型的随机数功能:返回一个随机数函数原型:void srand(unsigned int seed)头文件:#include <stdlib.h>参数:...

2020-03-04 14:31:50 617

原创 基于Keil下多文件打包生成Lib库文件的具体操作

在项目上有时需要提供程序给客户自己修改一些参数调节效果,但自己又不想提供源码公开时,这时就可以使用keil自带的打包Lib文件功能,操作如下:1、先打开一个工程项目,如果DRIVER文件下的lcd.c、key.c、24c02.c和IIC.c这四个文件的源码不想给别人看到的话,就将这些文件进行打包成Lib库2、将除了这四个文件外的其它文件都移除掉,这里可以先备份一份原工程项目,稍后可以将...

2020-01-18 14:25:55 3805 3

SH1107.rar

该手册是基于SH1107 OLED屏的资料手册,里面对SH1107相关的资料进行了详细的描述,大家可进行参考

2020-03-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除