为什么这样定义就不行了,该怎么处理

为什么这样定义就不行了
对于
char   x,y;
char   *p[10]={ "sssfgg ", "sggg "};
char   *p[2]={&x,&y};//可以说定义有两重含义
而对于
int   x,y;
int   *p[2]={&x,&y};
int   *p[2]={{1,2},{3,4}};//错误!有些不解

------解决方案--------------------
{1,2}算什么类型啊?
指针和数组是不同的,这就是其中一处。
int p[2][2]={{1,2},{3,4}};//