int(*p)[4] int*p[4]

求解释... 求解释 展开
 我来答
tsx86
推荐于2017-04-22 · TA获得超过2701个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:149万
展开全部
楼主你好。首先学习指针是有好多概念容易混淆。下面我来帮你区别一下:
1、int(*p)[4];------ptr为指向含4个元素的一维整形数组的指针变量(是指针)
2、int *p[4];-------定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)
3、int(*)[4];--------实际上可以看作是一种数据类型。也就是第一个(int(*p)[4];)中定义的p的数据类型
其实你要看这种到底是什么,就是要看他最先和谁结合。 比如1中p先与*结合,那就说明p本质是一个指针;而2中p先与后面的[4]结合,说明他本质是一个数组。再慢慢理解。希望能帮到你。如有疑问可以再问我。
更多追问追答
追问
您好 意思大致懂了您说的 1、int(*p)[4];------ptr为指向含4个元素的一维整形数组的指针变量,最后的结果是不是一个P所指向的变量形成的含4个元素的数组啊?
2、int *p[4];-------定义指针数组p,它由4个指向整型数据的指针元素组成(是数组),您说的这个 结果是不是 P[4]形成的4个元素的数组 之后前面加了一个*号 表示变成了4个指针变量。
另外还请教想问下您 int a[10];
如果为表示数组a元素的内容,是不是默认都为0呢?
追答
第一个可以这么说。第二个的话就是说这个数组实际是由指针元素构成的。也就是说数组的元素实际上是指针。与一般数组不同的就是数据类型(此处是指针)而已。
你说的:另外还请教想问下您 int a[10];
如果为表示数组a元素的内容,是不是默认都为0呢?我不是很明白,能说清楚点吗?数组要赋初值啊。看怎么赋值的。如果是数组名a的话代表的是数组a的首地址。是一个地址,可以看作是指针常量(注意是常量哦)。
冷漠鉴客
2011-08-30 · TA获得超过178个赞
知道答主
回答量:113
采纳率:0%
帮助的人:83.5万
展开全部
int(*p)[4] 是一个指向4个整形数数组的指针
int*p[4]是一个有4个指针的数组,该指针是一个指向一个整型数的。
这个在c语言里是难点,初学时很容易混淆,不过你先找变量,然后先往右看,如果遇到圆括号(一般是圆括号,而且是右半边,如果是左半边就说明它是一个函数)就往左,比如第一个p先往右,然后遇到括号,所以往左看到*,证明他是一个指针,是一个指向整形数数组的指针。第二个,p向右,是一个数组,是一个有4个指针的数组。
追问
想问下您 int a[10];
如果为表示数组a元素的内容,是不是默认都为0呢?
追答
不是,都是未知的垃圾数据。你可以写个程序尝试一下!
#include
int main()
{
int i;
int a[10];
for(i=0;i<10;i++)
printf("%d ",a[i]);
}你放在编辑器里运行一下就知道了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
竹竹风子kemi
2012-09-20 · TA获得超过3694个赞
知道大有可为答主
回答量:4572
采纳率:44%
帮助的人:2560万
展开全部
当然不是,int(*p)[4]表示p是一个指针变量,它指向包含4个整型元素的一维数组

而int *p[4],由于方括号[]运算级别高,因此p先与[4]结合,此时p[4]定义成数组形式,再与前面的 * 结合,这样一来就是一个存放指针的数组了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ryzhp
2012-09-20 · TA获得超过257个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:152万
展开全部
int(*p)[4];------p为指针变量指向含4个元素的一维整形数组(p是一个指针)
int *p[4];-------定义指针数组p,该数组中有4个整形指针变量,(p是指针数组,其中有4个指针)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式