C语言是一种低级语言,可以方便地访问内存位置并执行与内存相关的操作。
例如,scanf()函数将用户输入的值放在变量的位置或地址。这是通过使用&符号实现的。
例如:
int num; printf("输入一个数: "); scanf("%d", &num); printf("%d", num);
&num是变量num的地址。
存储器地址是以十六进制数表示的。十六进制(hex)是一个基数为16的数字系统,它使用数字0到9和字母a到F(16个字符)来表示一组四个二进制数字,这些数字的值可以是0到15。
对于32位内存来说,读取一个8个字符长的十六进制数要比试图用二进制来破译32个1和0容易得多。
以下程序显示变量i和k的内存地址:
void test(int k); int main() { int i = 0; printf("i的地址是 %x\n", &i); test(i); printf("i的地址是 %x\n", &i); test(i); return 0; } void test(int k) { printf("k的地址是%x\n", &k); }
在printf语句中,%x是十六进制格式说明符。
程序输出因运行而异,但类似于:
i的地址是846dd754 k的地址是846dd758 i的地址是846dd754 k的地址是846dd758
变量的地址从声明到其作用域结束都保持不变。