嵌入式人工智能完整学习笔记----《嵌入式基础篇1.1_C语言___数据类型》

<基础数据类型>
[数据类型]------>[基本类型]------[整数]

->×××家族
1.有符号:int、short、long int
无符号: unsigned int 、unsigend short、unsigend long int
2.×××常量
->实型家族
1.实型变量
单精度:float
双精度:double
长双精度:long double
2.实型常量
->字符型家族
1.字符变量:char a = 65
2.字符常量: char a = 'A'
->枚举家族
enum a
{

};

->指针家族
1.指针概念:指针就是地址。在计算机中所有数据都是存放在储存器中的。
一般可以把储存器中的一个字节称为一个内存单元,不同的数据类型所占有的内存单元数不等。
2.指针常量:C语言中,唯一的指针常量就是NULL。
注意:内存单元的指针(地址)和内存单元内容(具体存放的变量)是两个不同的概念。
<变量与常量>
->变量的定义
注意:关于变量的定义和变量的声明是两个极易混淆的概念,在形式上也很接近。在对变量进行
了定义后,存储器需要为其分配一定的内存空间,一个变量在起作用域范围内只能有一个定义
。而变量的声明则不同,一个变量可以有多次声明,且存储器不会为其分配存储空间。=·
->typedef
1.定义新类型:typedef unsigend int uint
->常量的定义
1.coust定义常量:int coust a
2.define定义常量:#defind mun 10
注意:预处理指令#define的后面没有“;”
->作用域
1.函数原型作用域:始于“(”,止于“)”
2.局部变量:在函数内部定义的变量称为局部变量。局部变量仅能被定义该变量的模块内部的语句所访问。
3.全局变量:与局部变量不同,全局变量贯穿整个程序,他的作用域为源文件,可以被源文件中的任何一个函数
使用,它们在整个程序执行期间报纸有效。
->存储模型
1.自动:(1)自动变量的作用域仅限于在定义的模块内(2)自动变量为动态存储模式(3)同模块不可以使用同变量名
2.寄存器:(1)使用register修饰变量可以加快存储速度,仅限于频繁使用的变量,且不能是全局变量不能被取地址!不然会报错
3.静态、空连接:
(1)局部变量:作用域仅限在模块内。
(2)全局变量:作用域在源文件,可被其他源文件调用。
(3)静态局部变量:用修饰符static则为静态空链接,作用域再次被调用时值不会被初始化。
(4)静态全局变量:用修饰符static怎为静态内部链接,不会被外部源文件调用。
(5)外部变量:用修饰符:extern修饰可以调用外部源文件的非静态全局变量。
<预处理>
->预定义
1.预定义符号:内置的预处理宏用来查看源程序的信息
2.宏定义;(1)无参宏定义:意义在于:替换文本;#define 标识符 字符串(字符串可以是常熟、表达式、格式串)#define M (y+3) ;宏定义是有作用域的用(#define“作用域”#undef);“”内的无法宏替换。
(2)有参宏定义:意义在于:C语言中允许带有参数,在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,对带参数的宏,在调用中不仅要宏展开,而且要宏替换!#define m(y) (y+3)
//***
#include<stdio.h>
#define Max(a,b) (a>b)? y:n
int main (viod){

int a = 1 b = 2;
Max(a,b);
printf("%d\n",Max);

}
//**
->文件包含
意义:文件包含的语句的功能是把指定的文件插入该语句行位置;从而把指定的源文件链接到当前文件中。

->条件编译
1.第一种形式
/
#ifdef 标识符
程序段1
#else
程序的2
#endif
注释:他的功能是,如果标识符已经被#define语句定义过,则编译程序段1,否则编译程序段2;如果没有程序段2(为空),本格式中的#else可以没有。
/
2.第二种形式
/
#ifndef标识符
程序段1
#else
程序段2
#endif
注释:与第一种形式的区别是将ifdef改为ifndef。他的功能是,如果标识符未被#define语句定义过,则编译程序段1,否则编译程序段2,这与第一张刚好相反。
/
3.第三中形式
/*
#if常量表达式
程序段1
#else
程序段2
#endif
注释:他的功能是,如果常量表达式的我值为真(非0),则编译程序段1,否则编译程序段2.因此可以使程序在不同条件下,完成不同功能。

<需要注意的问题>
重点:嵌入式开发很重要的一个问题,Linux可移植性的问题。Linux是一个可移植性非常好的系统,这也是嵌入式Liunx能够快速发展起来的原因。
所以,嵌入式Linux 在可移植性方面所作的工作是非常值得学习的。

猜你喜欢

转载自blog.51cto.com/11444021/2418729