2016.7.12c语言的特点左右法则,内存

来源:互联网 发布:南京旅游 知乎 编辑:程序博客网 时间:2024/05/15 12:32

嵌入式开发中为什么选用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=5;

如果num为全局变量,分配在数据段的data区,初始化为5

 

声明与定义

定义:创建一个变量,为其分配内存空间,并为它取名字(变量名),一个变量只能定义一次。

声明:告知编译器,这个(变量名)已经分配在一块内存上了,但是并未为其分配内存

 

 

 

 

 

 

   

  

0 0
原创粉丝点击