自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 C语言基础:多级指针

一、多级指针原理指针的本质就是一个普通变量,它的值表示的是一个内存地址,这个地址中可能存放了其它变量。那么二级指针其实也是一个普通的变量,这个变量中同样也存放了一个内存地址,而这个内存地址是一个指针变量的地址。例如:int a = 0;int b = 1;int *p = &a;int **p2 = &p;a是一个普通变量,而p是一个指针变量,它存放了a的地址,而p2是一个二...

2018-06-17 10:00:17 4392 1

原创 树莓派多旋翼无人机制作:遥控器读数

一、简单认识遥控器 接下来我们要了解的是摇控器,你如果对摇控器有一定了解的话可能听说过“日本手”和“美国手”这两种不同的摇控器。其实它们并没有什么本质差别。假设我们的四轴已经可以成功的飞行,我们需要摇控器上的一个控制杆可以控制四个电机的整体转数,也就是人们常说的“油门”。当然,油门这个词用在四轴上可能不太贴切,它的作用就是控制电机转数,可快,可慢,而所谓的“日本手”摇控器是油门在右侧,...

2018-05-24 19:34:20 3987

原创 C语言基础:通用指针

一、通用指针 通用指针变量用void *来修饰。顾名思义,通用指针可以用来存放任意型的内存地址,char、short、int、float、double等这些类型的地址都可以使用void *型变量来存放。同样char *、short *、int *、float *、double *等指针变量均可以赋值给void *型变量。例如:#include <stdio.h>#inc...

2018-05-18 09:47:49 3736 1

原创 C语言基础:函数指针

        在前面章节中我们学习了如何定义并使用一种特殊型变量——指针。其实指针也是一种普通变量,只不过它们存放的值表示的是其它变量的内存地址。在本节我们要学习指针的另一种用法,存放函数的内存地址。例如:#include <stdio.h>void myfunc(void){ printf("my function.\n");}int main(int argc, cha...

2018-05-07 13:36:00 438

原创 C语言基础:指针做参数

先来思考这样一个问题如果有两个变量需要互换其值,应该如何处理?答案非常简单:#include <stdio.h>int main(int argc, char **args){ int i = 3; int j = 5; int t; t = i; i = j; j ...

2018-04-27 13:44:28 550

原创 “坚持”的背后

        关于“坚持”这两个字大家都熟悉的不能再熟悉了,人们总是说:“如果你想做好一件事就要坚持到底。”“坚持就是胜利!”“贵在坚持!”对于这些话初时学得很对,但仔细想想我学得很有问题。为什么这么说呢?我们透过“坚持”这两个字的表面,想想它背后的意思是说:“这件事我本来不想做,我也不可能完成,但我要努力的做下去,咬紧牙关、历尽艰辛的走下去……”这是个很大的问题,我们做一件的事的动力是什么?初...

2018-04-23 11:06:40 463 1

原创 C语言基础:指针数组与数组指针

        一、指针数组        在这一节中我们来学习一个数组,这个数组比较特殊,也比较普通。说它特殊是因为这个数组是指针的数组,也就是说我们有一个数组,这个数组里存放的变量类型是指针型变量;说它普通是因为数组变量其实与其它普通变量没有什么区别,指针变量就是一种可以存放内存地址的变量,所以它们也可以被定义成一串连续的变量集合,这个集合就是指针数组。例如,我们可以定义一组变量,这组变量就是...

2018-04-18 08:40:06 1742 2

原创 C语言基础:指针与数组

一、指针与数组的关系                其实,指针与数组变量并没有本质的区别,指针变量就是数组变量,而数组变量也是指针变量。为什么这么说呢?我们来看看面代码,定义一个数组array和一个指向这个数组首元素的地址的指针p,还有将数组变量直接赋值给了一个指针变量p1:int array[4] = { 0, 1, 2, 3 };int *p = &array[0];int *p1...

2018-04-14 16:41:16 546

原创 C语言基础:地址与指针

        从这一节开始我们要学习C语言中最重要的一个机制——指针。指针是C语言的灵魂。想要学好指针,我们就要先从内存地址学起。一、内存地址        内存,实际上一可以存放很多字节数据的一个内部存储器。每一个存储单元为8个bit位,也就是一个字节byte,简写为B。这样多个存储单元线性的排列在一起,就构成了一定大小的存储空间。1024个字节为1KB,1024KB为1MB,而1024MB...

2018-04-08 08:55:25 1299

原创 C语言基础:多维数组

        今天我们来学习数组的另一种用高级用法,多维数组。多维数组的定义与使用与数学定义一致,它可以表示多维的数值。        一、二维数组        例如我们先来定义一个二维数组int array[3][4] ={ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } };        我们可以像上面例子一样在数组定义时为其指定...

2018-04-08 08:54:14 1377

原创 C语言基础:字符数组与字符串

        在本节中我们来学习关于字符数组和字符串的相关知识。我们知道定义一个数组时需要为其指定相应的变量类型。也就是说,定义了数组的类型之后这个数组中的所有变量就都是相同的类型。现在我们就来定义一个字符弄型的数组,如下:char hello[5] = {'H','e','l','l','o'};        这样我们就定义了一个字符型的数组,对于数组型的变量这样定义是没有问题的,但有两个方...

2018-04-08 08:52:09 1019 1

原创 C语言基础:简单数组

        本节我们将一起来学习关于数组相关的知识。在第一章中我们已经简单的学习过定义数组和使用数组,在本章我们将学习数组的详细内容,并与数组结合学习指针的概念与应用。       我们首先来看一看数组的定义,看下面例子其中其实定义数组与定义普通型变量没有什么区别定义一个变量时只是将这个变量只是向系统申请了一个变量,而定义数组则是相当于向系统申请了多个连续 变量,例如:short array[...

2018-04-05 08:08:55 551

原创 C语言基础:变量的作用域

        在这一节中我们来学习一下关于变量的作用域。在前面的课程中我们已经知道如何定义变量,并对其赋值和计算,但并没有对其作用域做额外的说明。其实,我们定义的变量并不会一直有效,它只会在其作用域内有效,并在其作用域外失效。一、局部变量        我们最先是在main函数内部定义了一些变量并使用它们,例如:int main(int argc, char *argv[]){ int ...

2018-04-01 15:11:54 15113

原创 C语言基础:多文件编译

        多文件编译,在我们最早编写Hello World程序时我们就将程序写在了一个后缀名为.c的文本文件里,然后通过gcc编译器对其编译并运行。在本节我们将学习如何编写多个源文件的程序一、头文件header与源文件source        通常我们会在头文件中一些类型的定义、结构体定义、宏定义、函数声明、include包含等内容。而在源文件中编写实际的功能实现。        例如我...

2018-03-31 07:48:32 35804 11

原创 C语言基础:不定参数

        在这一节里我们来学习C语言中另外一个重要的机制,不定参数。不定参数是指函数可以接收不确定个数的参数,不定参数用...来表示,它必须要写在正常参数表的后面,例如我们熟知的printf函数:int printf (char *fmt, ...);        printf的第一个参数为char* fmt,后面则是不定参数。它表示可以接收任意个数的参数。我们在调用这样的函数时可以向其传...

2018-03-30 06:57:57 2836

原创 C语言基础:函数参数与返回值

        在本节中我们来详细讲述一下函数的参数表与返回值。在定义一个函数时我们就需要确定这个函数的参数表及返回值。        一、参数表        参数表就是我们在调用这个函数时对它的输入内容,通过对函数的输入,使得函数在不同输入的情况下有着不同的输出,也就是返回值。例如我们定义一个用于计算两个变量之和的函数:int plus(int a, int b){ return a +...

2018-03-27 09:00:54 7635 2

原创 C语言基础:函数的声明与定义

        在这一章中我们来学习一下关于函数的定义与使用。关于函数的概念我们可以这样理解,函数是一个功能的集合,它可以根据输入完成特写的功能,并将结果输出。当然有时候函数只是为了实现一些特写功能而并不一定要有输入或输入。我们想要自己编写一个函数需要编写两部分内容:声明和定义。函数的声明就是告诉编译器我们想要定义一个函数,并明确规定其返回值(输出)、函数名、参数表(输入)。声明函数的语法如下:...

2018-03-26 11:20:24 17434 2

原创 C语言基础:goto语句

        在本节中我们来学习一个比较有争议的语句goto,goto语句可以使程序在没有任何条件的情况下跳转到指定的位置,所以goto语句又被称为是无条件跳转语句。它的语法如下goto label;//其它代码label:        其中,label为我们自己定义的一个标签,定义的规则与变量的命名相同,它的位置是不固定的,它可以写在goto语句的后面,也可以写在它的前面,然而goto语句...

2018-03-19 10:20:21 3952

原创 C语言基础:break与continue

一、跳出循环语句:break        在前面我们已经学习了关于循环程序的几种写法:while、do while、for等语句,我们知道,这些循环语句都有着一个特点,就是在每次循环时都要去检查循环的条件表达式是否成立,如果成立则继续循环,如果不成立则停止循环。但是在很多实际情况中我们需要程序在循环条件还成立的情况下就结束循环,对于这种情况C语言提供了一个关键字叫作break专门用于这种情况,...

2018-03-18 14:01:01 519

原创 C语言基础:for语句

一、for循环语句         在本节中我们来一起学习另一种循环方式,它叫for语句。for语句的语法如下:for (初始语句; 条件表达式; 每次循环后执行语句){    printf("%d\n", day);}         在for语句中后的小括号中一共有三部分内容,每个部分用分号;隔开。第一部分为初始化语句,当程序执行for语句时首先执行此语句,并且只执行一次,与条件表达式是否成...

2018-03-17 08:36:12 1289

原创 编程小技巧:遍历数组

        今天跟大家分享的小技巧是关于数组遍历的。通常我们在对数组进行操作时常常会被数组的下标越界问题所困扰。当然在C语言中编译器不会去校验数组下标的边界,也就是说如果你定义了一个具有5个元素的数组,正面的操作方式在C语言中是完全合法的:int a[5] = {0, 1, 2, 3, 4};a[-3];a[-2];a[-1];a[5];a[6];a[7];        但是在其...

2018-03-15 09:59:08 298

原创 C语言基础:while与do while

        在第一章中我们已经简单学习了关于使用while语句来实现循环的操作,现在我们来详细讲述关于while语句的循环方式和do while语句的循环方式。一、whlie循环        while循环语句是C语言中最基本的循环方式,它的语法结构如下:while (条件表达){        //循环体}        while是C语言的一个关键字,其后是使用一个小括号中的条件表达式来...

2018-03-14 19:13:30 42146 12

原创 编程小技巧:遍历数组

        今天跟大家分享的小技巧是关于数组遍历的。通常我们在对数组进行操作时常常会被数组的下标越界问题所困扰。当然在C语言中编译器不会去校验数组下标的边界,也就是说如果你定义了一个具有5个元素的数组,正面的操作方式在C语言中是完全合法的:int a[5] = {0, 1, 2, 3, 4};a[-3];a[-2];a[-1];a[5];a[6];a[7];        但是在其...

2018-03-13 14:26:05 1188

原创 喜欢重复造轮子

        近年来常常有人说起“不要重复造轮子”。然而对于我来说,我却偏偏喜欢“重复造轮子”。为什么呢?其实很简单,我一向认为只有去真正的了解“轮子”的原理才能更好的使用它,把它应用的加合理、更加有效。在这个信息高度发达的时代,技术这一名词在很多人眼里变得越来越不值钱,很多人认为目前有那么多的开源技术,那么多的开源功能,需要用到某一个技术时随手拿来就可以用了,根本不用管它的内部结构与实现原理,...

2018-03-12 11:32:00 1126 1

原创 C语言基础:switch语句

        switch语句可以算是if else语句的一种特殊情况。当我们使用if else语句来做判断时,如果我们只想对条件表达式的结果做一些特定值的判断,那么就可以使用switch语句。例如:我们需要根据当前月份来判断这个月份应该有多少天,我们可以使用if else语句来处理这个问题,但同样也可以使用switch语句来处理。switch语句的使用方式如下: switch (变量或表达式)...

2018-03-12 10:45:19 1094 1

原创 C语言基础:if语句

一、if语句        在操作符章节中我们学习过问号表达式,也就是当某一个条件表达式是真时,问号表达式的结果为冒号前的结果,当条件表达式是假时,问号表达式的结果为冒号后的结果。这里我们可以分析一下,问号表达式其实是一个条件判断功能表达式,也就是说:如果条件表达式的值为真:        那么结果为A;否则:        那么结果为B。        其实这是一个我们在生活常常需要处理的一种情...

2018-03-12 10:44:16 15228 2

原创 C语言基础:顺序语句

        一、顺序执行语句        我们知道计算机执行程序指令是按顺序的方式执行的,也就是说,按照指定的顺序,一条指令一条指令的执行,执行完一条指定之后,再执行下一条指令。当然现在很多CPU都是多核心、多线程的,并发执行多条指令,但对于同一个程序而言,CPU还是通过顺序的方式来执行指令的。        在C语言中程序执行时是按语句来顺序执行的,其中每一条语句都以分号结尾。例如: in...

2018-03-08 17:15:17 6020

原创 自我学习与自我解决问题

        我是一个编程爱好者,平时也做过一些小型的智能玩具,我不敢说自己很优秀,但至少还是有一些经验与大家分享的。我们有很多朋友都喜欢学习并动手做一些好玩的东西,比如小车、小船或飞机之类有趣的东西。但很多朋友都有过这样的经历,刚开始产生想要做点什么东西想法的时候,觉得很简单,但真正动手去做的时候却发现困难重重,不是这有问题就是那有问题。于是很多人选择了半途而废。        在这个世界上无...

2018-03-06 14:57:10 522

原创 C语言基础:运算符优先级

        在本节中,我们来一起学习操作符的优先级,并且需要了解在相同优先级下的操作符的结合性。我们先来看一下操作符优先级和结合性的表格:级别(由高到低)操作符(使用空格分隔)结合性1() [] -> .由左向右2! ~ ++ -- + - * (type) sizeof由右向左3* / %由左向右4+ -由左向右5<< >>由左向右6< <= &gt...

2018-03-05 14:40:50 705 2

原创 C语言基础:运算符和表达式

一、算数运算符和算数表达式        基本的算数运算符包括加减乘除四则运算符和求余运算符:+:加法运算符,双目运算符,双目运算符表示在符号的两侧有两个变量参与此运算。例如:a+b,a+3,4+6等。加法运算符具有右结合性。-:减法运算符,双目运算符。同时它可以作为“负号”做为变量的负值运算的左结合性运算符。作为负运算符时为单目运算符,并具有左结合性。*:乘法运算符,双目运算符,具有左结合性。/...

2018-03-04 21:19:48 719

原创 C语言基础:枚举与类型定义

        一、枚举类型        枚举类型是C语言中的一种特殊类型,枚举类型可以让我们的程序使用一些固定长度和固定数值的变量值范围。定义枚举类型使用如下方式:enum 枚举类型 {枚举值列表};        例如,我们可以定义一个枚举类型的值范围是周日至周五的星期类型,或一月至十二月的月份类型:enum week{ Su, Mo, Tu, We, Th, Fr, Sa};en...

2018-03-02 14:47:20 15969

原创 C语言基础:关键字符号与变量

一、关键字与符号:1.关键字auto    double    int    long    break    else    long    switchcase    enum    register    typedef    char    extern    return    unionconst    float    short    unsigned    continue   ...

2018-03-01 13:09:54 1904

原创 技术真的没用吗

        我是一个技术型的程序员,或许有朋友会问:“程序员不就是做技术的吗?”事实上我认为目前中国的程序员中多数都不是真正意义上的技术人员,他们通常只会机械式的写代码,从互联网上搜索能用的现成代码然后复制粘贴,我之前写过一篇《编程是一门艺术》。我从事编程工作到现在已经有十二年的时间了,不敢说自己是一个优秀的程序员,但我一直在向这个方向努力。编程是我的兴趣所在,我也非常热爱这个职业。     ...

2018-02-28 11:56:23 469 6

原创 C语言基础:标准输入与输出

        在前面内容中我们已经知道了使用printf函数来在标准输出设备上显示一些内容,接下来我们要学习一些其它的输入输出函数,让我们的程序可以通过标准输入设备(键盘)取得用户的输入内容,并在标准输出设备(显示器)上显示出来。        一、putchar和getchar        这两个函数是对单个字符进行处理,putchar是在标准输出设备上显示一个字符,而getchar是在标准...

2018-02-27 15:09:33 6567 4

原创 编程是一门艺术

        IT行业是一个又特殊又普通的行业。在这个多元化、信息化的时代,人们对电脑、互联网、智能家电等等名词越来越熟悉,越来越依赖。而这些名词背后有着一个神秘的行业——IT业。这个行业发展迅速,从早期的电脑、软件、互联网到现在的信息化、大数据、云计算、人工智能等等。随着这些热门词汇渐渐被人们所接受。行业内部的专业人士也越来越关注这方面的技术内容,但是对于编程的艺术却被逐渐的淡化。人们不再讨论...

2018-02-24 12:16:30 4565

原创 C语言基础:函数的定义与调用

        在前面内容中我们调用了一个标准C的库函数,叫printf,那么如果我们想自己定义函数应该如何来编写程序呢?定义函数又有什么好处呢?因为我们在教材中提及到的例子主要目的是为了让读者对程序的原理有一定的了解,所以设定的例子程序通常都比较简单,基本上在几行到十几行,多一点的也就三五十行代而已,但是在真正的编程工作中,我们需要完成的代码将非常大,所以将代码合理的分为不同的区块是很有必要的,...

2018-02-21 09:20:18 114645 22

原创 C语言基础:数组与字符串

        一、数组变量        在上一节中我们学习了如何定义变量,例如定义一月的最多天数为31,则定义int max = 31;即可。但是如果我们有很多个变量需要定义,例如从一月到十二月的最大天数不尽相同,我们就需要定义12个变量,用于存放这些数值。在C语言中提供了一个方便定义同类型多个变量的方式,叫做数组。我们来看一下定义数组的代码: int days[12] = {31, 28, ...

2018-02-21 09:16:43 476 1

原创 C语言基础:变量与表达式

        接下来我们来编写一个显示当前月份的每一天的程序,然后通过对此程序代码进行说明,让大家对变量和算数表达式有一定的了解: #include <stdio.h> //包含标准输入输出头文件 /* 这是一个显示一月份 ...

2018-02-20 15:44:44 2414

原创 玩转树莓派:安装操作系统

          第一节 准备工作        玩转树莓派我们首先需要做一些准备工作,我们需要准备一块树莓派3+B、一张不小于8GB的sdcard和一个sd卡读卡器:树莓派3+Bsdcardsd卡读卡器        树莓派在通电后会读取sdcard中事先被烧录好的操作系统,载入并运行此操作系统,所以我们还需要到树莓派的官方网站上下载树莓派的专用操作系统:        树莓派官方网站:htt...

2018-02-20 15:07:22 28134 1

原创 玩转树莓派:前言

        我是首先接触的树莓派然后再接触的Arduino和STM32,也许是先入为主的缘故,我对树莓派有着非常大的热情与兴趣,带有Linux操作系统、带有丰富GPIO接口、体形微小的PC电脑,简直是我的最爱。        它是一款带有操作系统和存储空间的PC电脑,编程者可以直接在Linux操作系统上进行编程,大大简化了对底层功能开发的工作。同时,树莓派也可以运行大量在Linux下的软件包,...

2018-02-20 15:04:57 440

空空如也

空空如也

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

TA关注的人

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