您的位置:首页 > 编程语言 > C语言/C++

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
 
声明与定义
定义:创建一个变量,为其分配内存空间,并为它取名字(变量名),一个变量只能定义一次。
声明:告知编译器,这个(变量名)已经分配在一块内存上了,但是并未为其分配内存
 

 

 

 

 

 

   

  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: