Guido 发表于 2020-10-27 12:38:03

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

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;
}

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

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

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





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


2.sizeof()与strlen()函数,在处理字符数组时候的区别
sizeof()取的是所占字节数,包括结尾字符\0
strlen()函数必须得声明头文件#include<string.h>他取的字节数不包括\0   
下面以实例来分析:
页: [1]
查看完整版本: 逆向学习第13天_全局变量与数组(下)