Chinaunix首页 | 论坛 | 博客
  • 博客访问: 458487
  • 博文数量: 62
  • 博客积分: 1742
  • 博客等级: 中尉
  • 技术积分: 859
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-06 00:13
个人简介

这是一句很长很长而且又很啰嗦并且很无聊的废话...

文章分类

全部博文(62)

文章存档

2013年(1)

2012年(13)

2011年(48)

分类: C/C++

2011-05-20 20:49:06

     引用一下C专家编程的话,加深一下记忆.
原文:当提到数组时,就把它看作是一种向量,也就是某种对象的一维数组,数组的元素可以是另一个数组.当看到"数组的数组的数组"时,其中每一个单独的数组都可以看作是一个指针.这是因为在表达式中的数组名被编译器当作"指向数组第一个元素的指针".数组指针所指向的数组的维数不同,其区别会很大(指的是他们所增长的步长不同).
     另外,数组和指针可交换性的情况只有两种.一,把一个数组定义为函数参数时,可以选择把它定义为组数,因为不管你定义为数组指针还是组数,在函数内部事实上获得的都是一个指针.二,对数组进行访问时,可以以指针的形式操作,因为下标(a[1])操作,会被编译器"改写"或解析为像*(a+1)这样的指针访问!然后剩余的其他情况下,指针和数组都不能交换,这个一定要明确.
     记住,指针始终是指针,他绝不可以改写成数组.
 
例如:
int a[2][3][5];//定义3维数组
int (*b)[5]=a[0];//a[0]返回的是第二维数组的第一个元素的指针,这个指针指向一个有5整形变量的数组
int *c=a[0][0];//a[0][0]返回的是第三维数组的第一个元素的指针,这个指针指向一个整形的变量
阅读(1608) | 评论(0) | 转发(0) |
0

上一篇:Linux汇编

下一篇:C语言运算符优先级

给主人留下些什么吧!~~