我写了一个像:
这样的函数void func1(char chx[], int y)
{
int wsn = 0;
wsn = *(int *) (&chx[2]);
if (wsn == 0) {
...
}
}
编译器运行良好,没有警告,没有错误。但是当代码运行时,似乎它得到一个狂野的指针。代码崩溃了。
不知道为什么会崩溃
答案 0 :(得分:1)
当传递给函数时,数组会衰减为指针。这意味着在func1
中变量chx
是一个指针,所以做&chx
会给你一个指向指针的指针。
解决方案:不要使用地址操作符&
。