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天_全局变量与数组(下)
仔细观察a与b的地址变化(由于动图录制掌握不熟练,后期学习一下)
逆向学习第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天_全局变量与数组(下)
2.sizeof()与strlen()函数,在处理字符数组时候的区别
sizeof()取的是所占字节数,包括结尾字符\0
strlen()函数必须得声明头文件#include<string.h> 他取的字节数不包括\0
下面以实例来分析:
逆向学习第13天_全局变量与数组(下)
|