有关数组后一个位置的元素的作用?
先定义int *p,a[5];
后用
for(p=a;p<a+5;p++)这是为了使循环遍及数组的所有元素
虽然p能指向所有数组元素,然而这里用到了a[5],a[5]是不存在的,书上说数组后一个位置的元素事有作用的,
到底有啥作用,还有上面的循环怎样不用到a[5]。
谢谢啦!
----------------解决方案--------------------------------------------------------
一个边界,上面的程序用不到a[5]
----------------解决方案--------------------------------------------------------
确实,上面的程序用不到a[5],但却出现了a[5],毕竟他是一个不确定的,那怎样写不出现a[5],又保证能访问到数组里的所有元素。
谢啦!
----------------解决方案--------------------------------------------------------
这个有用不是对你的程序说的,而是对别的程序和操作系统来说的
就好像你的床长度为2米,而你要是使用“从床头算起2.2米处”,那就把脚伸到别人床上了,人家会说,这个地方我有用,把你的脚拿回去----一样的道理。
对你的程序来说,a[5]是不存在的,一定不要用它
----------------解决方案--------------------------------------------------------
xiexie谢谢!
----------------解决方案--------------------------------------------------------
回去看看书,
定义数组的a[5]意思是数组有5个元素,并没有说存在一个元素叫做a[5]
也就是说你那段程序里面从来没有出现过a[5]这个元素。
----------------解决方案--------------------------------------------------------
不是,说有a[5]确实是我错了
不过a+5就是数组里的a[4]的后一个位置,也就是不确定的并非数组a 里的内容。
----------------解决方案--------------------------------------------------------
你程序里面写的p<a+5意思就是不要访问到那里,要停在a+5之前嘛
----------------解决方案--------------------------------------------------------
访问是停在了a+5之前,而最终p是指向了a+5只是未对他进行任何操作。
----------------解决方案--------------------------------------------------------
C语言 保证数组的最后一个元素的后一个元素有效。(同楼主的 a + 5),但不不意味着这个元素真的有效。
个人理解:
应该是地址上的有效。像XP这样保护模式下的系统,一个程序无法访问超出这个程序的内存空间。
----------------解决方案--------------------------------------------------------