2016.7.12c语言的特点左右法则,内存
2016-07-12 08:45
423 查看
嵌入式开发中为什么选用c语言?内核为什么用c语言来做?
c语言语言特点:
1.C语言具有出色的可移植性,能够在多种不同体系结构的软/硬件平台上运 行。
2.c语言有简洁紧凑,使用灵活的语法机制,可以直接访问硬件。
3.c语言具有很高的运行效率。
①移植性:从一个平台切换到另一个平台,修改的地方越少,移植性越好。
②汇编与c语言差别:汇编可以直接访问硬件,c语言要编译过后,才能访问硬件。对硬件的初始化,通常用汇编。汇编语言是低级语言,复杂的程序很难编写,而c语言是高级语言,可以完成很多复杂的程序。
操作系统的内核都用c语言写的,内核给上层应用提供支持。
③面向结构特点:追求实现过程
面向对象特点:追求实现效果 优点:代码复用性,维护性,扩展性(不做任何变化)比较好
丹尼斯里奇: C语言之父
c语言的标准:K&RC ANSIC/C89标准 C99标准 C11标准
GNU C = C90 + GNU Extensions = C90 + (some features in C99 + some features in C11)
数据类型:数据集合的划分,不同数据类型的CPU的意义是不一样的
左右法则:首先从从未定义的标识符开始阅读,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。
举例:int a;整型变量
int *a;整型指针变量
int **a;整型指针的指针变量
int a[10];整型数组
int *a[10];整型指针数组
int (*a)[10];整型数组指针变量
int (*a)(int);整型函数指针变量
int (*a[10])(int);整型函数指针数组(数组里面存放的都是指针,指针指向 的是整型函数的地址)
int num-5;
int *p=#
int **pp=&p;
指针变量p指向num:即p中保存的是num的地址
int *(*(*fp1)(int))[10];
函数指针变量,该函数指针指向一个形参为int,返回值为数组指针,该数组指针指向一个整型指针数组。
float(*(*b())[])();
函数,形参为空,该函数的返回值为数组指针了,该指针指向一个函数指针数组,该数组里的函数指向一个形参为空,返回值为float的函数。
int *(*(*arr[5])())();
函数指针数组,该函数指针指向一个无参的函数,返回值为函数指针,该指针指向一个函数指针,该函数的形参为空,返回值为int *
void *(*c)(char,int(*)());
函数指针变量,该指针指向函数形参为char和整型函数指针,返回值为void*
float(*(*e[10](int*))[5])
函数指针数组,该数组的元素指向一个形参为int*,返回值为float型指针的数组
(char*)强制类型转化
sizeof(int)=4
(short)=2
(long)=4
(float)=4
(double)=8
(char)=1
任何类型的指针都是4个字节
因为每个指针都保存的地址地址的长度都是固定的,所以指针都是4个字节
bit
字节=8位
半字=2个字节=16bit
字=4个字节=32bit
sizeof是运算符,不是函数
size of int错误
size of (int)正确
size of num正确
size of (num)正确
unsigned char:0-255
signed char:-128-127
正数的原码=补码
负数的补码等于原码取反加1
负数的原码等于补码取反加1
typedef使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于typedef关键字右边。
例如:typedef int size;
此声明定义了一个 int 的同义字,名字为 size。注意typedef并不创建新的类型。它仅仅为现有类型添加一个同义字。
你可以在任何需要 int 的上下文中使用 size:
typedef char Char;
typedef unsigned char Char;
vim typedef.h
typedef int Int;
有符号数和无符号数进行比较运算时(==,<,>,<=,>=),有符号数隐式转换成了无符号数
(即底层的补码不变,但是次数从有符号树变成了无符号数)
strlen 函数 sizeof 运算符
变量的三大特点:
1.变量的数据类型:主要说明变量占用内存空间大小如int型
2.变量的作用域:变量的有效性的范围,即:变量的使用范围
3.变量的存储类型:变量在内存中的存储方式。不同的存储方式,影响变量在内存中的生存周期。
进程的活动空间叫作进程的虚拟地址空间 4g
MMU:内存管理单元
int num=
4000
5;
如果num为全局变量,分配在数据段的data区,初始化为5
声明与定义
定义:创建一个变量,为其分配内存空间,并为它取名字(变量名),一个变量只能定义一次。
声明:告知编译器,这个(变量名)已经分配在一块内存上了,但是并未为其分配内存
c语言语言特点:
1.C语言具有出色的可移植性,能够在多种不同体系结构的软/硬件平台上运 行。
2.c语言有简洁紧凑,使用灵活的语法机制,可以直接访问硬件。
3.c语言具有很高的运行效率。
①移植性:从一个平台切换到另一个平台,修改的地方越少,移植性越好。
②汇编与c语言差别:汇编可以直接访问硬件,c语言要编译过后,才能访问硬件。对硬件的初始化,通常用汇编。汇编语言是低级语言,复杂的程序很难编写,而c语言是高级语言,可以完成很多复杂的程序。
操作系统的内核都用c语言写的,内核给上层应用提供支持。
③面向结构特点:追求实现过程
面向对象特点:追求实现效果 优点:代码复用性,维护性,扩展性(不做任何变化)比较好
丹尼斯里奇: C语言之父
c语言的标准:K&RC ANSIC/C89标准 C99标准 C11标准
GNU C = C90 + GNU Extensions = C90 + (some features in C99 + some features in C11)
数据类型:数据集合的划分,不同数据类型的CPU的意义是不一样的
左右法则:首先从从未定义的标识符开始阅读,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。
举例:int a;整型变量
int *a;整型指针变量
int **a;整型指针的指针变量
int a[10];整型数组
int *a[10];整型指针数组
int (*a)[10];整型数组指针变量
int (*a)(int);整型函数指针变量
int (*a[10])(int);整型函数指针数组(数组里面存放的都是指针,指针指向 的是整型函数的地址)
int num-5;
int *p=&num;
int **pp=&p;
指针变量p指向num:即p中保存的是num的地址
int *(*(*fp1)(int))[10];
函数指针变量,该函数指针指向一个形参为int,返回值为数组指针,该数组指针指向一个整型指针数组。
float(*(*b())[])();
函数,形参为空,该函数的返回值为数组指针了,该指针指向一个函数指针数组,该数组里的函数指向一个形参为空,返回值为float的函数。
int *(*(*arr[5])())();
函数指针数组,该函数指针指向一个无参的函数,返回值为函数指针,该指针指向一个函数指针,该函数的形参为空,返回值为int *
void *(*c)(char,int(*)());
函数指针变量,该指针指向函数形参为char和整型函数指针,返回值为void*
float(*(*e[10](int*))[5])
函数指针数组,该数组的元素指向一个形参为int*,返回值为float型指针的数组
(char*)强制类型转化
sizeof(int)=4
(short)=2
(long)=4
(float)=4
(double)=8
(char)=1
任何类型的指针都是4个字节
因为每个指针都保存的地址地址的长度都是固定的,所以指针都是4个字节
bit
字节=8位
半字=2个字节=16bit
字=4个字节=32bit
sizeof是运算符,不是函数
size of int错误
size of (int)正确
size of num正确
size of (num)正确
unsigned char:0-255
signed char:-128-127
正数的原码=补码
负数的补码等于原码取反加1
负数的原码等于补码取反加1
typedef使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于typedef关键字右边。
例如:typedef int size;
此声明定义了一个 int 的同义字,名字为 size。注意typedef并不创建新的类型。它仅仅为现有类型添加一个同义字。
你可以在任何需要 int 的上下文中使用 size:
typedef char Char;
typedef unsigned char Char;
vim typedef.h
typedef int Int;
有符号数和无符号数进行比较运算时(==,<,>,<=,>=),有符号数隐式转换成了无符号数
(即底层的补码不变,但是次数从有符号树变成了无符号数)
strlen 函数 sizeof 运算符
变量的三大特点:
1.变量的数据类型:主要说明变量占用内存空间大小如int型
2.变量的作用域:变量的有效性的范围,即:变量的使用范围
3.变量的存储类型:变量在内存中的存储方式。不同的存储方式,影响变量在内存中的生存周期。
进程的活动空间叫作进程的虚拟地址空间 4g
MMU:内存管理单元
int num=
4000
5;
如果num为全局变量,分配在数据段的data区,初始化为5
声明与定义
定义:创建一个变量,为其分配内存空间,并为它取名字(变量名),一个变量只能定义一次。
声明:告知编译器,这个(变量名)已经分配在一块内存上了,但是并未为其分配内存
相关文章推荐
- 状态机C语言
- C语言chown()函数:改变文件所有者
- C语言fchmod()函数:修改文件的权限
- 详细对比C语言中的chmod()函数和fchmod()函数
- geek青年的状态机
- POJ3272 奶牛交通 解题报告
- 山东理工OJ 1132 C/C++经典程序训练2---斐波那契数列
- 《C++ Primer Plus》12.6 复习各种(类和动态内存分配的)技术 笔记
- C++11 之 " = delete "
- c语言 函数
- 《C++程序设计原理及实践》- 错误
- OC语言中关于触摸事件和手势
- OC语言——————表视图
- Awesome C/C++(图像部分)
- 天梯赛训练2 5-4 最长连续递增子序列 (20分)
- BZOJ 2440 [中山市选2011] 完全平方数
- Tyvj 1403 关押罪犯
- C# 调用C++dll 引发DllNotFoundException
- VIJOS P1889 天真的因数分解
- 天梯赛2 重现5-4 最长连续递增子序列