C程序Array作为参数

时间:2014-11-08 12:18:27

标签: c

我写了一个像:

这样的函数
void func1(char chx[], int y) 
  {
    int wsn = 0;

    wsn = *(int *) (&chx[2]);
    if (wsn == 0) {
    ...
    }
 }

编译器运行良好,没有警告,没有错误。但是当代码运行时,似乎它得到一个狂野的指针。代码崩溃了。

不知道为什么会崩溃

1 个答案:

答案 0 :(得分:1)

当传递给函数时,数组会衰减为指针。这意味着在func1中变量chx是一个指针,所以做&chx会给你一个指向指针的指针。

解决方案:不要使用地址操作符&