icebitch
V2EX  ›  C

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

  •  
  •   icebitch · Mar 22, 2016 · 3409 views
    This topic created in 3729 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
        1
    bearice  
       Mar 22, 2016   ❤️ 2
    p[i] == *(p+i)

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