使用内存
C被设计为一种低级语言,可以轻松访问内存位置并执行与内存相关的操作。
例如,scanf() 函数将用户输入的值放在变量的位置或地址处。这是通过使用&符号实现的。
例如:
int num;
printf("Enter a number: ");scanf("%d", &num);printf("%d", num);
&num是变量num的地址。
内存地址以十六进制数给出。十六进制,是一个基数为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("The address of i is %x\n", &i);test(i);printf("The address of i is %x\n", &i);test(i);return 0;
}void test(int k) {printf("The address of k is %x\n", &k);
}
在printf语句中,%x是十六进制格式说明符。
程序输出因运行会有所不同,但看起来类似于:
The address of i is 846dd754
The address of k is 846dd758
The address of i is 846dd754
The address of k is 846dd758
从变量声明到变量作用域结束的地址都保持不变。
【选词填空】声明一个整数变量,并以十六进制格式打印其地址:
int var = 42;
printf("%", var)
*
@
x
&