c语言二维数组的存储方式、全局变量以及局部变量解析

本文介绍了C语言中二维数组的内存存储方式,强调其按行存储的特点。讲解了二维数组作为函数参数时的注意事项,以及全局变量和局部变量的概念和作用范围。特别讨论了`const`关键字用于声明只读变量和`static`关键字在局部变量和全局变量中的应用,展示了它们在程序中的不同行为和用途。
摘要由CSDN通过智能技术生成

博客主页: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文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不掉头发的程序猿_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值