接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据。
1. 那么这些变量在内存中是如何存放的呢?
2. 程序又是如何使用这些变量的呢?
首先,来了解一下 C 语言的变量是如何在内存分布的。
C 语言有全局变量(Global)、本地变量(Local),静态变量(Static)、寄存器变量(Regeister)。每种变量都有不同的分配方式。先来看下面这段代码:
#include <stdio.h>
int g1=0, g2=0, g3=0; //函数外的全局变量
int main()
{
static int s1=0, s2=0, s3=0;
int v1=0, v2=0, v3=0;
//打印出各个变量的内存地址
printf("0x%08x\n",&v1); //打印各本地变量(函数内)的内存地址
printf("0x%08x\n",&v2);
printf("0x%08x\n\n",&v3);
printf("0x%08x\n",&g1); //打印各全局变量(函数外)的内存地址
printf("0x%08x\n",&g2);
printf("0x%08x\n\n",&g3);
printf("0x%08x\n",&s1); //打印各静态变量(static修饰)的内存地址
printf("0x%08x\n",&s2);
printf("0x%08x\n\n",&s3);
return