首页 > 有关数组[]的问题

有关数组[]的问题

c#include <stdio.h>

int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};

    for (int i = 0; i < 10; ++i)
    {
        printf("%d ",a[i]);
    }
    printf("%\n");
    for (int j = 0; j < 10; ++j)
    {
        printf("%d ",j[a]);
    }
    return 0;
}

第二个 for 循环中 j[a] 这么写居然是对的,原理是什么?
想到了delete [] ptr,不知道是否有关系?


j[a]是*(j+a)的简写形式,虽然结果没错,但含义却是错的,所以不要这么写


你读指针,怎么读都都不会报错,你赋个值试试?


楼上正解,还有lz的printf("%\n");中的%多余了吧


a是指针,是一块内存的地址值,j[a]=*(j+a)=*(a+j)=a[j] 中,关于a[j]==j[a]?在StackOverFlow 有一帖: With C arrays, why is it the case that a[5] == 5[a] ?。

指针是危险的,诚如楼上所言,编译器经常不会报错,非法访问内存,或者读到的值和目标值不同,对于程序来说就是错的,但语法角度上又是正确的,我没有工程经验,感觉大多数指针的错误是逻辑错误/手抽打错。

---

楼主为什么会想到delete [] ptr?想到什么?

【热门文章】
【热门文章】