以下C代码在32位Linux上完美运行,但在64位系统中则不行:
#define MAX 5
int change(int** ns) {
ns[0] = 111;
ns[1] = 222;
ns[2] = 333;
}
int main() {
int i, nums[MAX];
memset(nums, 0, sizeof(nums));
change((int**) &nums);
for (i = 0; i < MAX; i++)
printf("nums[%d] = %d\n", i, nums[i]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Linux 32位(x86):
$ uname -a
Linux host-1549776 3.2.0-58-generic-pae #88-Ubuntu SMP Tue Dec 3 18:00:02 UTC 2013 i686 i686 i386 GNU/Linux
$ gcc inta.c -o inta
$ ./inta
nums[0] = 111
nums[1] = 222
nums[2] = …Run Code Online (Sandbox Code Playgroud)