指针和数组问题
对于以下代码:#include <stdio.h>
void main()
{
char a;
char (*pa) = &a;
char (*ppa) = &a;
}
以上代码能够编译通过;
但若改成以下代码就报错了
char (*pa) = &a;
char (*ppa) = &a;
char (*pa) = &a;
char (*ppa) = &a;
求解释一下原因,并阐述一下若想使数组指针指向这个三维数组下标有什么讲究。
十分感谢!!!
你不知道指针类型要和指向的类型匹配吗?这就是唯一的讲究,什么类型的指针指向怎么样的地址单元 本帖最后由 脑子 于 2017-8-14 00:05 编辑
Krant5 发表于 2017-8-13 23:44
你不知道指针类型要和指向的类型匹配吗?这就是唯一的讲究,什么类型的指针指向怎么样的地址单元
还是不太明白,能具体举例阐述下吗?
比如对于:
char (*pa) = &a;
指针pa的类型为:char (*)
指针指向类型为:char ()
然后我就卡住了。。。
(*pa)里pa指向2个char;
&a指向2个char; // 不报错
********************************
(*ppa)里ppa指向3*2个char;
&a指向3*2个char;// 不报错
********************************
(*pa)里pa指向2*3个char;
&a指向2个char; // 报错
********************************
(*ppa)里ppa指向3个char;
&a指向3*2个char; // 报错
********************************
(*pa)里pa指向2个char;
&a指向3*2个char; // 报错
*********************************
(*ppa)里ppa指向3*2个char;
&a指向2个char; // 报错 脑子 发表于 2017-8-14 00:03
还是不太明白,能具体举例阐述下吗?
比如对于:
就这样就可以啊 脑子 发表于 2017-8-14 00:03
还是不太明白,能具体举例阐述下吗?
比如对于:
char (*pa)可以先想为一个有两个元素的数组,数组中的元素类型是指针
当char (*pa) = &a;时,就是赋值,这个时候 pa 就是a pa+1就是 a
页:
[1]