
一个关于C语言指针数组的理解问题。
如果我定义的时候是“char*a[]",书上说这是一个数组指针,数组的每一个元素都是一个指针。但是如果是“int*a[]"的话,就是一个指针数组,是一个指向数组的指针。如...
如果我定义的时候是“char *a[]", 书上说这是一个数组指针,数组的每一个元素都是一个指针。
但是如果是“int *a[]"的话,就是一个指针数组,是一个指向数组的指针。如果要写成数组指针,就要写成“int (*a)[]"。
有点不太理解为什么不写成“char (a*)[]"呢?
希望能给我一个容易理解的方法。谢谢! 展开
但是如果是“int *a[]"的话,就是一个指针数组,是一个指向数组的指针。如果要写成数组指针,就要写成“int (*a)[]"。
有点不太理解为什么不写成“char (a*)[]"呢?
希望能给我一个容易理解的方法。谢谢! 展开
4个回答
展开全部
“数据类型 *数组名[]”使用来定义指针数组的,例如char *a[]及int *a[]本身都是指针数组,也就是说数组内的元素都是指针,只不过前者是char型指针,后者是int型指针罢了。
另外,数组指针是不需要诸如int (*a)[]这样的定义的,使用int a[]定义好数组后,数组名a本身就是指向该数组第一个元素的指针了。国内有不少编程类教材故意把很多内容复杂化,让人看得云山雾罩,抓不到重点,我从事软件开发两三年了,还从没见过谁写代码时会这样刁难自己、刁难别人。软件开发讲究的是代码清晰易读,定义越简单越好,表达式越短越好。
另外,数组指针是不需要诸如int (*a)[]这样的定义的,使用int a[]定义好数组后,数组名a本身就是指向该数组第一个元素的指针了。国内有不少编程类教材故意把很多内容复杂化,让人看得云山雾罩,抓不到重点,我从事软件开发两三年了,还从没见过谁写代码时会这样刁难自己、刁难别人。软件开发讲究的是代码清晰易读,定义越简单越好,表达式越短越好。
展开全部
“数组指针是指向数组首元素的地址的指针,其本质为指针; 指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针),其本质为数组。 数组指针的使用在某些情况下与指针数组很相似,要注意区别。”
“int (*a)[]"形式的是指向数组的指针,又称数组指针。
在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 一维指针数组的定义形式为:“类型名 *数组标识符[数组长度]”。 例如,一个一维指针数组的定义:int *ptr_array[10]。
http://baike.baidu.com/view/2072881.htm
http://baike.baidu.com/view/3026322.htm
“int (*a)[]"形式的是指向数组的指针,又称数组指针。
在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 一维指针数组的定义形式为:“类型名 *数组标识符[数组长度]”。 例如,一个一维指针数组的定义:int *ptr_array[10]。
http://baike.baidu.com/view/2072881.htm
http://baike.baidu.com/view/3026322.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯定的,因为a[]是数组的定义,而(*a)理解成指针,再理解(*a)[]为数组指针,把*理解成一个数组的标志。
追问
那为什么char和int型不一样呢?char型为什么不用加括号?
追答
这个就是约定俗成的,就像左手拿碗,右手拿筷子一样,记住特例就行。没什么好深究的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
友情帮顶
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询