指针和数组赋值

时间:2015-08-26 20:00:53

标签: c arrays pointers

int val = 7;

int *ptr = &val;

val是int类型的变量,ptr是指向int 的指针 所以上面的赋值是正确的,编译器没有警告。

int val[5] = {5, 3, 2, 33,557};
int (*ptr)[1]=&val;

val是一个整数数组,ptr是一个指向int 数组的指针 运行时编译器给我一个警告:

warning: initialization from incompatible pointer type [enabled by default]
请有人解释一下他们之间的区别是什么?

1 个答案:

答案 0 :(得分:2)

警告是因为指针的类型(指向int的长度为1的数组的指针)与数组的类型不匹配,长度为5 int的数组。你需要

int (*ptr)[5]=&val;

第一个例子中没有警告,因为初始化LHS上的指针类型与RHS上指针的类型相匹配。