第四天了

swap调试以及有关栈的小知识

代码展示

#include<stdio.h>
void swap(int * aa, int * bb)
{
    int cc = *aa;
    *aa = *bb;
    *bb = cc;
}
int main()
{
    int a = 1, b = 0;
    swap(&a, &b);
    printf("%d %d", a, b);
    eturn 0;
}

调试机制

逐语句,f11

逐过程,f10

区别:逐语句时,先从main函数开始,遇到被调用的函数时进入到函数内部按照语次进行

     逐过程时,依然是从main函数开始,但是在遇到被调用函数时不会导函数内部去调试

逐语句:

逐过程:

代码过程分析

注释:* aa表示定义的指针为aa
     *aa表示取指针aa所指向的内容

栈使用情况分析(利用逐语句调试分析)

1.将变量a,b放入栈中
2.为变量a,b赋值
3.将指针变量* aa,* bb放入栈中,并标明其内存储的地址所表示的变量的情况,同时将c放入栈中
4.将c的值赋成指针aa所指向的值
5.交换指针aa和bb所表示的值

小端序

字节数据在计算机内存中存放的字节顺序
定义:数据的高位字节存放在地址的高端 低位字节存放在地址低端
     (数据是左边是高位,地址是右边是高位)
eg:
   int 12345678: 一个int占四个字节,在存储时需要用小端序,即存储位置要发生调换,
   八个数字占四个字节,所以是两两在一个组,所以存储情况为78563412

   char[] 0123: 一个char只占一个字节,一个字节存储两个十六进制位,存储时不用到小端序,
   '0'的ASCII码表对应的是48,48的十六进制是30,所以存储情况31323300(00是字符串后的终止符\0)

栈的特性

先进后出
从高地址像低地址延伸

栈的作用

暂时保存变量
调用函数时传递参数
保存函数返回地址
-------------本文结束感谢您的阅读-------------