博客主页:https://blog.csdn.net/weixin_46094737?type=blog
欢迎评论⭐留言 如有错误敬请指正!
本文由小学生廉原创,首发于 CSDN🙉🙉🙉
未来很长,值得我们全力奔赴更美好的生活!💞💞💞
二维数组存放方式
首先要明确一点二维数组在内存中是按行存放的,先存储第一行,在接着存储第二行…..
二维数组作为函数参数
二维数组作为函数的参数,实参可以直接使用二维数组名,在被调用函数中可以定义形参所有维数的大小,也可以省略以为大小的说明。例如:
void find(char a[3][10]);
void find (char a[ ][10]);
因为从实参传递来的是数组的起始地址,如果在形参中不说明列数,编译器无法定位元素的的位置。
全局变量和局部变量解析
局部变量(Local Variable):定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错。
#include <stdio.h>//<>汇编语言本身已经有的函数库,用<>定义
#define A 91100
//#include "MAX" //用户自己可以定义函数库,用""标注
void modfiy(int i);
const c=100100;//全局变量,但是用const修饰,不可更改
int a=10010;//全局变量,存储在静态区
static b=10086;//静态全局变量,存储在静态区
上图代码段中的变量a就是一个全局变量,因为它定义的位置在主函数的前面。在进一步理解之后我们会发现,只要变量定义在函数体外面,不管这个函数是主函数还是子函数(被调函数),都可以作为全局变量去使用。
这里需要注意的是const关键字和static关键字的区别:
1. const
当我们看到关键字const时,首先想到的应该是:只读。因为,它要求其所修饰的对象为常量,不可对其修改和二次赋值操作(不能作为左值出现)。
合理的使用const关键字,不仅能够让编译器很好的保护相应的数据,还能够直观的向代码的阅读者传递有用信息。
#include <stdio.h>
const a=10010;
int main()
{
printf("%d",a);
// a += 100;
// printf("%d",a);
return 0;
}
当我们在没有改变const 变量a的值时,系统正常打印。
a=10010
当试图改变a的值再去打印的时候,系统会直接报错,不能打印。
提示a是一个只读变量。
2.static
static在面向过程编程中的使用场景包括三种:
1) 修饰函数体内的变量(局部)
2) 修饰函数体外的变量(全局)
3) 修饰函数
第一种情况,static延长了局部变量的生命周期,static的局部变量,并不会随着函数的执行结束而被销毁,当它所在的函数被第再次执行时,该静态局部变量会保留上次执行结束时的值。
#include <stdio.h>
void test()
{
static int j = 1;
printf("%d\n", j);
j += 1;
}
int main()
{
test();
test();
return 0;
}
运行结果:
1
2
全局变量(Global Variable):定义:所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件。