5个回答
展开全部
数组指针--指向数组的指针,是一个指针,其指向的类型是数组;指针数组--元素为指针的数组,是一个数组,其中的元素为指针。仔细研读下面的程序:
#include <stdio.h>
int
main(void)
{
int a[2][2] = {{1,2},{3,4}};
int (* p)[2];
char * s[2] = {"hello", "world"};
p = a;
printf("%d, %d, %d, %d\n", (*p)[0], (*p)[1], (*(p+1))[0], (*(p+1))[1]);
printf("%s %s\n", s[0], s[1]);
return 0;
}
顺便指出楼上犯的错误a++ = i;是错的,不信自己把你的程序跑跑看。正确的应该说
int a[10];
for(i = 0; i < 10; i++)
{
a[i] = i;
}
与
for(i = 0; i < 10; i++)
{
*(a+i) = i;
}
是等价的!
#include <stdio.h>
int
main(void)
{
int a[2][2] = {{1,2},{3,4}};
int (* p)[2];
char * s[2] = {"hello", "world"};
p = a;
printf("%d, %d, %d, %d\n", (*p)[0], (*p)[1], (*(p+1))[0], (*(p+1))[1]);
printf("%s %s\n", s[0], s[1]);
return 0;
}
顺便指出楼上犯的错误a++ = i;是错的,不信自己把你的程序跑跑看。正确的应该说
int a[10];
for(i = 0; i < 10; i++)
{
a[i] = i;
}
与
for(i = 0; i < 10; i++)
{
*(a+i) = i;
}
是等价的!
展开全部
当然有区别了,指针数组存放的是都是指针,即数据类型是指针!
而数组指针是用指针指向一个数组!比如数组名本身也是指针!
例如:
for(i = 0;i < 10;i++)
{
a[i] = i;
}
与
for(i = 0;i < 10;i++)
{
*(a++) = i;
}
等效!!
呵呵!不好意思,本人刚学c一年,熟练不够,谢谢指出!!非常感谢!!!
而数组指针是用指针指向一个数组!比如数组名本身也是指针!
例如:
for(i = 0;i < 10;i++)
{
a[i] = i;
}
与
for(i = 0;i < 10;i++)
{
*(a++) = i;
}
等效!!
呵呵!不好意思,本人刚学c一年,熟练不够,谢谢指出!!非常感谢!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个是指针数组,第二个是指向数组的指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、指针数组——存放指针的一个数组
比如int
*point_arr[5];
point_arr是一个指针数组,其每个元素point_arr[i]的类型是int
*
2、数组指针——指向一个数组的指针
比如
int
a[3]={1,2,3};
int
(*pa)[3]=
&a;
pa是指向数组a的一个指针
比如int
*point_arr[5];
point_arr是一个指针数组,其每个元素point_arr[i]的类型是int
*
2、数组指针——指向一个数组的指针
比如
int
a[3]={1,2,3};
int
(*pa)[3]=
&a;
pa是指向数组a的一个指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我对这两概念也一直记不太清,下面是自己的理解
指针数组应该就是型如
*p[]是个里面都是放指针的数组,(要看这变量的类型一般就是把名字去掉int
*[]
就说明这数组的元素都是
int
*)
数组指针我估计是这种吧
(*p)[3]
这个代表P是个指向有3个元素的数组的指针,
如这样使用
int
(*p)[3],
a[3];
p
=
&a;
指针数组应该就是型如
*p[]是个里面都是放指针的数组,(要看这变量的类型一般就是把名字去掉int
*[]
就说明这数组的元素都是
int
*)
数组指针我估计是这种吧
(*p)[3]
这个代表P是个指向有3个元素的数组的指针,
如这样使用
int
(*p)[3],
a[3];
p
=
&a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询