脑子 发表于 2017-8-13 23:38:06

指针和数组问题

对于以下代码:
#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;

求解释一下原因,并阐述一下若想使数组指针指向这个三维数组下标有什么讲究。
十分感谢!!!

Krant5 发表于 2017-8-13 23:44:42

你不知道指针类型要和指向的类型匹配吗?这就是唯一的讲究,什么类型的指针指向怎么样的地址单元

脑子 发表于 2017-8-14 00:03:15

本帖最后由 脑子 于 2017-8-14 00:05 编辑

Krant5 发表于 2017-8-13 23:44
你不知道指针类型要和指向的类型匹配吗?这就是唯一的讲究,什么类型的指针指向怎么样的地址单元

还是不太明白,能具体举例阐述下吗?

比如对于:
char (*pa) = &a;
指针pa的类型为:char (*)
指针指向类型为:char ()
然后我就卡住了。。。

富裹 发表于 2017-8-14 05:27:02

(*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; // 报错

Krant5 发表于 2017-8-14 08:20:08

脑子 发表于 2017-8-14 00:03
还是不太明白,能具体举例阐述下吗?

比如对于:


就这样就可以啊

lumber2388779 发表于 2017-8-14 09:05:14

脑子 发表于 2017-8-14 00:03
还是不太明白,能具体举例阐述下吗?

比如对于:


char (*pa)可以先想为一个有两个元素的数组,数组中的元素类型是指针
当char (*pa) = &a;时,就是赋值,这个时候 pa 就是a pa+1就是 a
页: [1]
查看完整版本: 指针和数组问题