C语言的知识详解

无符号数和有符号数如何进行比较:有符号数会先进行隐式转换成无符号数(即是底层的补码不变,但是此数从有符号数转换成了无符号数)

          例如:int类型的数据与unsigned int 类型的数据进行比较时,会把int类型的数据转换为unsigned int 类型的数据,然后再进行比较,

          int data = 1; 与unsigned int = 1000;进行比较时,会把int = 1转换为unsigned int = 4394967295,再进行比较。

变量的三大特点:

变量的数据类型:主要说明变量占用的内存空间大小,如:int型占用四个字节。

变量的作用域:变量的可用代码范围,就是这个变量的作用域。

提高了逻辑局部性,增强了程序的可靠性,减少名字冲突。

变量的存储类型:即是变量分配使用内存空间的方式,也称存储方式。可分为静态存储和动态存储两种方式。

进程:狭义定义:是指正在运行的程序实例;

广义定义:是一个具有一定独立功能的程序关于某个数据集合的运行活动,它是操作系统中动态执行的基本单元,再传统操作系统中,进程既是基本的分配单元,也是基本的执行单元。

当创建一个进程时,操作系统会为该进程提供一个4G大小的虚拟地址空间,最终映射到物理内存中。

虚拟地址空间(4G):又分为两个部分:一个G分给内核,三个G分给用户空间;用户空间又分为栈空间,堆空间,(全局)数据区,代码段。

栈空间:局部变量 函数形参 自动变量 分配在 栈空间中。

特点是:先进后出  由系统管理,当局部变量执行完释放。

堆空间:malloc calloc ralloc 在堆空间上分配。

特点是:先进先出 由用户管理,例free(temp)释放。

全局数据区:bss区:保存未初始化的全局变量,

ordata:保存常量,

静态数据区:保存初始化的全局变量和static修饰的变量。

注:全局变量未初始化,系统会设定给一个初始值  例如,num = 0,

注:局部变量未初始化,系统会随机给一个值。


代码段:通常是指用来存放程序执行代码的一块内存区域。


全局变量和局部变量的区别:

(1):作用域不同:全局变量作用域为声明之后的整个文件 整个程序结束后释放,而局部变量只在某个程序的函数被调用的范围内使用,函数调用完就释放。

(2):未初始化:全局变量未初始化会被系统预先设定的给的值,而局部变量会倍系统随机给定一个值。

(3):存储位置不同:全局变量存储在全局数据区,局部变量存储在栈空间内。同时出现时,局部变量先起作用,优先级高于全局变量。

变量都是先声明后定义。也可以定义时声明。

声明可以多次声明,不分配内存空间

定义只能定义一次,并且分配内存空间。


声明:(1),定义性声明:int a;//为变量a分配内存空间;

(2)引用性声明:extern int a;//告诉编译器变量a在其他文件定义,不分配内存空间。


小数点数用二进制表示:整数部分除2取余,小数部分乘2取整数部分。

例如1.25=1.01b

1/2=0...1余数为1   0.25*2=0.5  整数部分为0    0.5*2=1.0整数部分为1  就没小数了 所以就是1.01.

例如0.2

0.2*2=0.4,整数部分为0   0.4*2=0.8  整数部分为0    0.8*2=1.6整数部分为1   0.6*2=1.2 整数部分为1  0.2*2=0.4  整数部分为0  

0.4*2=0.8  整数部分为0    0.8*2=1.6整数部分为1    0.6*2=1.2 整数部分为1     ..............  0.2=0.00110011.....不过一般到第二个0.8 就停止了。


段错误:是指访问的内存超出了系统所给这个程序的内存空间。

常见的段错误:大部分由指针引起的,1.访问系统数据区 2.内存越界。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值