小编Rod*_*ort的帖子

C中的代码:64位系统中的int数组函数参数问题

以下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)

c linux arrays 64-bit pointers

2
推荐指数
1
解决办法
92
查看次数

标签 统计

64-bit ×1

arrays ×1

c ×1

linux ×1

pointers ×1