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的首地址。是一个地址,可以看作是指针常量(注意是常量哦)。
展开全部
int(*p)[4] 是一个指向4个整形数数组的指针
int*p[4]是一个有4个指针的数组,该指针是一个指向一个整型数的。
这个在c语言里是难点,初学时很容易混淆,不过你先找变量,然后先往右看,如果遇到圆括号(一般是圆括号,而且是右半边,如果是左半边就说明它是一个函数)就往左,比如第一个p先往右,然后遇到括号,所以往左看到*,证明他是一个指针,是一个指向整形数数组的指针。第二个,p向右,是一个数组,是一个有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]);
}你放在编辑器里运行一下就知道了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然不是,int(*p)[4]表示p是一个指针变量,它指向包含4个整型元素的一维数组
而int *p[4],由于方括号[]运算级别高,因此p先与[4]结合,此时p[4]定义成数组形式,再与前面的 * 结合,这样一来就是一个存放指针的数组了。
而int *p[4],由于方括号[]运算级别高,因此p先与[4]结合,此时p[4]定义成数组形式,再与前面的 * 结合,这样一来就是一个存放指针的数组了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int(*p)[4];------p为指针变量指向含4个元素的一维整形数组(p是一个指针)
int *p[4];-------定义指针数组p,该数组中有4个整形指针变量,(p是指针数组,其中有4个指针)
int *p[4];-------定义指针数组p,该数组中有4个整形指针变量,(p是指针数组,其中有4个指针)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询