C语言变量内存地址的分配

本文通过一个简单的测试探讨了C语言中数组内存地址的分配情况。指出数组的地址是连续的,随着下标递增,但在不同变量间的地址关系需要进一步测试以明确。
摘要由CSDN通过智能技术生成

一个简单的测试

#include
int a;
int b;
int c;
int main()
{
	int x;
	int y, z;
	printf("%d/n", &a);
	printf("%d/n", &b);
	printf("%d/n", &c);
	printf("/n");
	printf("%d/n", &x);
	printf("%d/n", &y);
	printf("%d/n", &z);
	return 0;
}

输出结果:

4214964
4214968
4214972

2293532
2293528
2293524
可以看出,全局变量的地址分配是从内存编号小的地址开始,而函数内部的变量是从内存编号大的地址开始的。不过,这只是最简单的情形,所有变量都是4个字节的简单变量。接下来将针对各种情况做针对性的试验。

数组的地址分配

根据编程经验,可以推测一个数组的地址一定是连续的,并且,无论在何处定义,数组的地址都是随下标递增的。因此,下面两段代码才能等价地使用:

int i;
int a[10];
for ( i=0; i < 10; ++i ) scanf("%d", &a[i]);
int i;
int a[10];
for ( i=0; i < 10; ++i ) scanf("%d", a + i);

但是,数组的地址于其他变量的地址的关系还不能确定,需要做一些测试:

#include
int a[4];
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值