C语言概念问题!

ttoomm 2001-08-20 10:51:16
如下定义,

int *a[3];//第一种

int (*a)[3];//第二种

int *(a[3]);//第三种

请问,该如何解释这三种定义呢?
...全文
125 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimgreen 2001-08-21
  • 打赏
  • 举报
回复
无聊的 看一些书不就知道了
如c programing language
tjm 2001-08-21
  • 打赏
  • 举报
回复
up
SCUM 2001-08-21
  • 打赏
  • 举报
回复



缺乏创意 毫无意义的刨根问底


QXLEE 2001-08-21
  • 打赏
  • 举报
回复
xiaowei27(小阿伟)说得很详细了
zjlsct 2001-08-21
  • 打赏
  • 举报
回复
给分!!!我现在穷了
yechun 2001-08-21
  • 打赏
  • 举报
回复
xiaowei27 2001-08-20
  • 打赏
  • 举报
回复
惨了,没看清,第三种同第一种一样的,我没仔细看不好意思.
数组指针应该是这样;
int a[3]={1,2,3};
int *p=a;
xiaowei27 2001-08-20
  • 打赏
  • 举报
回复
给分.
azurecrystal 2001-08-20
  • 打赏
  • 举报
回复
第一种:指向a[3]的指针
第二种:一个有3个整形空间的数组
第三种:同第一种
xiaowei27 2001-08-20
  • 打赏
  • 举报
回复
int *a[3];//指针数组,数组a中有3个元素,每个元素都是指针变量.
int (*a)[3];//指向一个多维数组的指针但是它是以一维数组的方式来表示的
写个例子你看看:
int (*p)[3]; //p是一个指向一维数组的指针,该数组有3个元素.
先看一段简单的:
int a[3][2]={1,2,3,4,5,6}; //只有二维数组才能使用int (*p)[2](a);
int (*p)[2](a); //这个地方一定要用2
cout<<*(*(p+2)+1); //*(p+2)等于行,所以为2,第二个1为列
getch(); return 0; //相当于a[2][1],所以输出为6
若输出cout<<**a; 相当于*(*(a+0)+0)
int (*p)[2](a)也可以写成int (*p)[2]=a;
若使用三维数组:
int a[2][2][2]={1,2,3,4,5,6,7,8};
int (*p)[2][2](a);
cout<<*(*(*(p+1)+1)+1);
getch(); return 0;
int *(a[3]);//这肯定是一个数组指针啦.它是把数组a定义成一个指针你要区分数组指针与指针 数组的概念.





TYmir 2001-08-20
  • 打赏
  • 举报
回复
1.定义的指针数组的第四个元素
2.定义的二维数组第一行的第四个元素(a[0][3])
3.好像和第一个是一样的!


zjlsct 2001-08-20
  • 打赏
  • 举报
回复
要注意运算符的结合性
() []比*优先级高,
所以,int *a[3] 中,a首先与[3]结合,形成a[3]形式——即数组,然后与*结合,表示此数组是指针类型的,每个数组元素都是一个指针,指向一个整形变量,第三种相同。
第二种是定义指向数组的指针变量a
建议看书
fancy21 2001-08-20
  • 打赏
  • 举报
回复
噫,好玩
weihuan 2001-08-20
  • 打赏
  • 举报
回复
第一个好像是定义的指针数组的第三个元素
第二个是二维数组第一行的第四个元素(a[0][3])
第三个,有么?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧