今天在写代码的时候在编译的时候一直在一个地方出问题
Int **p;
Int a[2][3];
P=a;
想了一段时间也上网搜了一些资料终于找到了原因
数组的名字就是数组第一个元素的指针,那么要想把a赋值给一个变量这个变量是什么类型呢,先来缝隙下这个数组的第一个元素a[0],a[0]是一个包含有3个int类型数的一维数组,那么他的指针就是指向一个包含3个int类型数的一个指针,那么就需要定义一个Int (*)[3]
类型的变量来存放这个数组名。
所以应该改为
Int (*p)[3];
Int a[2][3];
P=a;
这样就没有问题了.
想到这里就想到了数组名和指针的关系
在很多情况下我们一般习惯性的写成
Int a[4];
Int * p=a;
这就说明了a 和p 是一样的吗?
不 请看下面
Sizeof(a)和sizeof(p)会相等吗?
Sizeof(a)=4*4=16是这个一维数组的长度 而sizeof(p)=4是一个指针的长度
而且p可以为左值也可以为右值 ,而a呢只可以为左值