icebitch
V2EX  ›  C

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

  •  
  •   icebitch · Mar 22, 2016 · 3731 views
    This topic created in 3879 days ago, the information mentioned may be changed or developed.
    #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");
    }
    
    3 replies  •  2016-03-22 13:58:07 +08:00
    bearice
    bearice
    Mar 22, 2016❤️2
    1
    p[i] == *(p+i)

    p+i == &p[i]
    icebitch
    icebitch
    OP
    Mar 22, 2016
    2
    @bearice 谢谢, 掩面~~~~
    extreme
    extreme
    Mar 22, 2016❤️1
    3
    p[i]等价于*(p+i)
    p+i 是一个指针,也就是地址, p[i]是一个具体的值,是 p+i 这个地址所指向的值。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4486 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:53 · PVG 11:53 · LAX 19:53 · JFK 22:53
    ♥ Do have faith in what you're doing.