C语言基础

来源:互联网 发布:双系统软件不能用 编辑:程序博客网 时间:2024/05/20 21:43
1.C语言之父:Dennis Ritchie(丹尼斯.里奇)
2嵌入式为什么会选择C语言作为开发工具?
主要原因是操作系统的内核都是C语言来写的,那么C语言一定有有别于其他高级语言的优点,程序员才会选择C语言编写内核
特点(1)C语言兼容性好,有出色的平台移植性,能在多种不同体系的软硬平台运行。
    (2)C语言能直接访问硬件,具有简洁紧凑,使用灵活的语法机制。
    (3)C语言运行效率高,因为操作系统掌控硬件资源,C语言能直接访问硬件。
C语言和汇编都能直接访问硬件,为什么内核不用汇编编写?
汇编不能实现复杂的功能,但汇编效率更高,常用于简单硬件的初始化。
3.C语言的标准
K&RC标准 ANSIC/C89标准 C99标准 C11标准
4.数据类型
定义:数据集合的划分,不同的数据类型对cpu的意义是不一样的
基本数据类型:空类型,字符型,数值型(实型和整型)
复合数据类型:数组,结构,联合,枚举,指针
强制转化
范例:int num=5;
      int *p=#
      char *ptr=(char*)p;
隐式类型转化:char<int<float<double
5 sizeof和strlen的比较
1 sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
当参数分别如下时,sizeof返回的值表示的含义如下:
    数组——编译时分配的数组空间大小;
    指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);字符串计算NULL
    类型——该类型所占的空间大小;
    对象——对象的实际占用空间大小;
    函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
 
2strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
 它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
6.变量
变量的三大特点:
变量的数据类型:主要说明变量占用内存空间的大小
变量的作用栈:变量的有效性范围
变量的存储类型:变量在内存中的存储方式
内存分配
1G分配给内核,用户无权访问,3G分配给栈空间,堆空间,数据段和代码段
栈空间存放:局部变量,函数形参,自动变量
堆空间存放:malloc ralloc calloc分配的空间
数据段又分为bss段,rodata段,data段
bss段保存未初始化的全局变量
rodata存放常量
data段(静态数据段)全局变量,static,修饰变量
7.声明与定义
定义:创建一个变量,为其分配内存空间,并为它取名字,一个变量只能定义一次
声明:告知编译器,变量名已经匹配在一块内存,但未分配内存。
1 0
原创粉丝点击