float a[20], *p=a; 什么情况下不能用 p[i] ?

2016-03-22 13:42:52 +08:00
 icebitch
#include <stdio.h>
#include <math.h>
#include <string.h>
void main() {
	float a[20], *p = a;
	int n;
	a[1] = 2.1;
	printf("%f",p[1]);
	puts("你想輸入幾個數(<=20)");
	scanf_s("%d", &n);
	for (int i = 0; i < n; i++)
		scanf_s("%f",p+i);//為什麼這裡不能用 p[i]? 书上明明说可以~!~
	for (int i = n-1; i > -1; i--)
		printf("%f  ", *(p + i));
	printf("\n");
}
2656 次点击
所在节点    C
3 条回复
bearice
2016-03-22 13:49:42 +08:00
p[i] == *(p+i)

p+i == &p[i]
icebitch
2016-03-22 13:54:11 +08:00
@bearice 谢谢, 掩面~~~~
extreme
2016-03-22 13:58:07 +08:00
p[i]等价于*(p+i)
p+i 是一个指针,也就是地址, p[i]是一个具体的值,是 p+i 这个地址所指向的值。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/265429

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX