代码展示
#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)
栈
栈的特性
先进后出
从高地址像低地址延伸
栈的作用
暂时保存变量
调用函数时传递参数
保存函数返回地址