查看: 548|回复: 0

[原创图文] 逆向学习第13天_全局变量与数组(下)

[复制链接]

17

主题

32

帖子

2

精华

高级会员

Rank: 12Rank: 12Rank: 12

学币
244
荣耀
0
rank
0
违规
0
发表于 2020-10-27 12:38:03 | 显示全部楼层 |阅读模式
1.在发生调用函数,且涉及到返回值时,数组型和整数型(或其他类型)的区别。
#include<stdio.h>
void exchange(int a, int b)//这个函数实现了,对a与b的值进行调换
{
        int t = 0;
        t = a;
        a = b;
        b = t;
}


int main()
{
        int a = 2;
        int b = 3;
        exchange(a, b);      //此函数执行之后, a与b的值会发生调换吗?
        printf("a=%db=%d", a, b);
        return 0;
}

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

仔细观察a与b的地址变化(由于动图录制掌握不熟练,后期学习一下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

我们可以看到,更换的只是调用参数中的a b的值,实际main()函数中的a b的值并没有受到影响
---------------那我们接着看数组的情况-------
#include<stdio.h>
void add(int a[10])  //将数组中的值都加1
{
        int i = 0;
        while (i<9)
        {
                a[i] += 1;
                i++;
        }
}

int main()
{
        int a[10] = { 1,3,5,7,9,11,13,15 ,17 };
        add(a);
        return 0;
}

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

数组做参数的时候,性质已经改变了,本质上只传递了数组的地址(指针)给形式参数。  等学到指针再返回来研究一下。贴一张图

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)

2.sizeof()与strlen()函数,在处理字符数组时候的区别
sizeof()取的是所占字节数,包括结尾字符\0
strlen()函数必须得声明头文件#include<string.h>  他取的字节数不包括\0   
下面以实例来分析:

逆向学习第13天_全局变量与数组(下)

逆向学习第13天_全局变量与数组(下)
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
学逆向论坛-免费的逆向学习论坛
微信公众号
快速回复 返回顶部 返回列表