C语言【C语言篇】☞ 13. 指针、大端和小端、进程空间

指针

1. 概念

  指针就是地点,指向了外存中的一个职位。

  地址是内存的一个码,内存中的一个字节就生一个数码,这个编号就是此字节的地方。

    1Bytes(字节)= 8bits(二进制)

2. 指针变量

  保存指针(地址)的变量。我们常以指针变量直接为指针。

3. 用法

  • 干什么用指针?
    • 通过传地址,可以以一个函数中做客另一个函数中的变量。对那进展操作
    • 好为此指针带回一个结出

指南针是援引数据类型,因为自己没有保留数据,只是保存了数据的地点,间接的找到内存中之数码。

C语言 1

  • 指南针用于参数

    值传递:函数的参数不是指针,调用这个函数传参数时相当给赋值。

        
基本数据列作为函数的参数是价值传递,
在函数中修改形参的价值未会见潜移默化到外边实参的价。

      C语言 2

    地址传递:函数的参数是一个指针,调用这个函数时需要传之凡地点。

         数组/指针作为函数的参数是地点传递,
如果是地方传递在函数中改形参的值会影响到外实参的价值。

       C语言 3

 4. 应用

  C语言 4

  C语言 5

5. 指南针加减操作

  • 指针加、减操作:与类型有关
  • 指南针支持加整数、减整数、指针的比和相减,但运算的单位由于指针的门类决定。
    • int类型指针 + 1 = 地址 + 4
    • char类型指针 + 1 = 地址 + 1

6. 指针与反复组的分

  (1)占用内存空间

数组占用空间 = 数组元素占用的空间*长度

指南针占用空间 = 在64号系统下,8只字节,固定的,与指针的档次没有干

  (2)赋值

屡次组名是常量,不可以修改该价;

指南针是变量,可以屡屡赋值(对指针赋值,本质上是指针指向的更改)

  

    数组的精神:

  • 数组其实是外存中的等同切开空间。定义一个频繁组,相当给分配了同片内存空间。
  • 数组名就是是及时片空间的首地址。数组名被的价不得变更,是只常量指针。
  • int
    a[10];//a是常量指针,40Bytes的空间的开端位置保存于a中。

 

    数组做吧参数传递:

  • 拿一个数组传入函数时,传之是反复组的地方,而非是数组本身。
  • C语言中无法用合数组用拷贝的法传于函数。
  • 因而,在C中,将一个数组传为一个函数时,一般要重新招一个数组长度的参数。

 

    数组可以做函数的返值吗?

      函数是无可以回来数组类型的。一个函数的回到值类型不容许出现xx[],但足以回到指针。

 

多方和小端

  由于电脑CPU的架构设计不同,一个整数有内存中存放的字节序列也非雷同。

    小端:一般的x86都是小端,一个整数的字节会倒序存放在内存中。比如int型的变量有4独字节,第4独字节会放在开始位置。

    大端:正好与小端相反,一个整数的字节会顺序存放在内存中,和存放字符串是一律的。solaris基本是多方面的。

  整数在内存中保存时,不同之微机(主要是CPU)会生出差的保存方法:

    C语言 6

进程

次: 保存在磁盘(外存)中的一个得尽之公文。(在外存)

进程: 正在实践之次第。先打磁盘调入到内存中,再实践。(在内存)

进程空间

  • 得尽之文书为应用程序,在磁盘上保存
  • 过程是正值周转的次序,在内存中
  • 每个过程在内存中占据的空间称经过空间

一个历程占用的内存空间可以分为以下区域:

  一、代码区(正文段,text)

      存放需要履行的代码(二前进制代码和字符串常量)。最充分特征是:只读。对是区域的改动直接会晤造成程序崩溃。

  二、全局区(静态全局区)

      存放全局变量和静态变量的。可读写,在程序运行期间,空间不见面让假释。

      BSS段:属于全局区,存放没有初始化过的全局变量。程序运行前,该区域会活动清0。

  三、堆区(自由区 heap)

      程序员自由分配空间以及放空间。动态分配内存空间。可读写。

      说明:

  • 程序员想啊时以这区域分配空间就什么时候分配,想啊时释放就什么时候释放。
  • 欠区域分配的内存空间不会见活动释放,只能由程序员主动释放。
  • 倘若该放的内存空间忘记释放,会造成内存泄漏

      申请分配空间:malloc、remalloc、OC中(alloc、init、new)

      释放空间:free、delete、OC中(release)

  四、栈区(stack)

      存放有变量(自动变量),内存空间的分红和自由是自动的,不叫程序员的主宰。可读写。

       C语言 7

C语言 8

C语言 9

 

    不要看野指针(没有赋值的指针, 我们叫野指针)

     C语言 10

 

    C语言 11