背景唠叨两句:
物联网(IoT)一直被认为是“下一个工业革命”,从通信、娱乐、医疗到智能化生活无处不在,本人目前是微软系统工程师,由于个人比较看好和喜欢智能家居这块,所以想转嵌入式软件开发。不管做什么事,一定要根据自己的喜好,这样才有不断的动力去学习与实践。有目标后就要有一个明确的学习清单,所以找了一套嵌入式软件开发入门教程(为了避免被骂打广告,就不说是教程出处了),接下来开始IOT小白入门之路咯,写博客主要是提高自己归纳总结的能力。不喜勿喷,小心脏受不了(技术理解有误,欢迎指出)
1.经典入门:hello world
1.1.概念:
先来了解一段C语言完整的代码
#include <stdio.h>
//IOT菜鸟入门(一)C语言基础
/*
C语言基本概念
*/
int main(int argc, char **argv)
{
printf("hello world.\n");
int a,b,c;
a = 1;
b = 2;
c = add(a,b);
printf("c = %d.\n",c);
}
int add(int a, int b)
{
return a+b;
}
*源文件:源文件即是源代码文件,后缀名是.c。
*头文件:include <stdio.h>就是一个头文件,后缀名是.h
C语言代码就是有源文件和头文件组成。
*关键字:关键字是C语言已经定义好了,代表着特殊含义的,直接可以使用的的字,无需我们再定义;每个关键字都有自己的特定的含义,我们需要去理解关键字的含义和用法,否则就看不懂C语言程序。
C语言关键字:
include(包含) 头文件包含
int(integer,整数) 用来表示一个整数的类型叫整形。
float(浮点型) 用来表示小数的类型
char(character,字符) 字符型数据类型
return(返回) 函数返回
*注释:C语言中注释以//开头,或者/* */,注释是给程序员看的,不是给机器看的。也就是说,程序员写注释给其他人看,以让人明白自己为什么要这么写。但是编译器编译程序的时候是忽略注释内容的,所以机器根本看不见注释,也不理注释。
*符号:C语言程序中包含很多符号,如; :, + () {} *等等,各种符号都有自己的含义,必须搞明白各种符号的含义,才能看懂C语言程序。
*变量:会变化的量。C语言程序中用变量来进行计算。
*函数:函数是C语言的一个基本组成单位,一个C语言程序其实就是由很多函数组成的,每个函数用来完成一定的功能,函数可以调用别的函数来完成功能。函数的标志是()。
C语言中有一个特殊的函数叫main,这个函数是整个程序的内定的入口,也就是说整个C语言程序是从main函数开始执行的,其他的函数都是直接或者间接被main调用。也就是你看到一段代码,看到main函数就要想到代码是从这个位置开始执行的,如int main(int argc, char **argv),而且main函数整段代码中是唯一的,入口有且只有一个。
其中“其他的函数都是直接或者间接被main调用”这句话怎么理解呢?请查看下图:
这样应该很清楚了吧,add这个函数就被main函数调用了。
我们再来聊聊printf这个函数名,为什么机器就能识别printf并打印出结果???printf字母换位abc行不行?答案肯定是不行的。
注意:printf这个函数名,其实是在<stdio.h>库函数里已经把printf这个函数定义了,所以当使用printf时,一定要带有#include <stdio.h>头文件,其中C语言中还有很多头文件,可百度查询。
再来看看int main(int argc, char **argv)
其中的argc和argv就是一个变量,他们的类型就被定义为int和char,(int argc, char **argv)是参数列表,调用main函数时,需要输入两个参数。
例如:
int add(int a, int b)
{
return a+b;
}
a和b就是一个变量而且定义为int类型,调用add函数时,需要输入两个参数对应a和b。
1.2、C语言写代码步骤:
第一步:编辑源代码(使用vi或者其他编辑器)
第二步:编译。编译就是用编译器把源程序转化成可执行程序的过程,编译要用到编译器。我们在linux中使用编译器一般是gcc。
譬如:gcchello.c 把当前目录下hello.c文件编译,得到的可执行文件名字叫a.out
也可以自己指定编译后生成的可执行程序的名字,使用gcc hello.c -o hello
第三步:执行编译生成的可执行程序,执行方式是./hello
第四步:调试。当你执行后发现程序结果不对,不是自己想要的,这时候就是返回来看源代码哪里不对。然后修改,再编译执行,再看结果。如此循环直接结果正确。
好了,这篇结束。主要是学习C语言的基本概念和能看懂简单的代码。