C语言中数组元素a[5]可以用*(p+5)表示,那么*(p+i)就应该表示的是a[i],是数组的第

如题所述

你要问什么问题?注意数组中的下标是从0开始的,第i个元素实际上是第i+1个元素了,这要把题意理解好:i是元素下标,元素个数是i+1,要看题目要求的是什么了。追问

对啊,那书上为什么要写表示*(p+i)表示数组中第i个元素,不应该写第i+1个元素,那么还有个问题,i若取0,按书上说法为数组第0个元素,数组有第0个元素吗?

追答

已经提醒你把题意弄清楚了!正规书上都是从“第0个元素”开始计数的,否则大家就没有共同语言了!所以要把序数和计数搞清楚,下标是序数,个数是计数。第0个元素就是第0号元素!每个字节是8位,但最高位却说是第7位或D7位是不是?

追问

我知道了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-19
这段话是正确的。p是指针,p+5对应的是a[5]的地址,*(p+5)是a[5]的值。追问

那么*(p+i)是不是就表示a[i]的值呢?如果表示a[i]的值,那么就是说*(p+i)表示数组第i+1个元素才对啊?

追答

p+i表示数组第i个元素的地址,*(p+i)表示数组第i个元素。不是第i+1个元素。
对于数组a[i],第一个是a[0],i是0,不是1,因此*(p+i)表示数组第i个元素。不是第i+1个元素。
C语言中,对于数组a[i],从a[0]开始,是第0个元素、第1个元素,你应该是以为是从1开始了。

追问

如果i取0呢?数组第0个元素?还是这个第0个元素用我们的话来说它就是第1个元素呢?

追答

C语言中,对于数组a[i],从a[0]开始,是第0个元素、第1个元素、……,你应该是以为是从1开始了。

数学上也有类似的情况。例如数列{an},给出a0=...,那么a0是数列的第0项。

追问

哦,我知道了,谢谢

追答

对于数组a[i],从a[0]开始,i从0开始。

追问

嗯嗯,我只是觉得书上说的数组第0个元素实际表示数组的第1个数有点不可思议

追答

嗯。

本回答被提问者采纳