#include<stdio.h>
int main()
{
int a = 1, b = 10, c = 2;
int *arr[] = {&a, &b, &c};
printf("%d\n", *arr[arr[1]-arr[0]]);
return 0;
}
我在这里得到输出
10
。通过这里的输出,我了解变量 a b c
连续分配的内存。该输出是静态的还是取决于系统?我可以期望在另一个系统中得到相同的输出吗?并且保证这个变量的连续内存分配?这里我使用gcc编译器。
c 中是否保证变量的连续内存分配?
没有。
此输出是静态的还是取决于系统?
否,因为这取决于系统。该系统有时可能会按预期“工作”,但有时则不然。
我可以期望在另一个系统中得到相同的输出吗?
其他系统可能有所不同。即使相同的系统在不同的运行中也可能有所不同。
并且这个变量的内存分配连续性是有保证的吗?
没有。