c中的数组和指针之间的区别?

A.s*_*lar 3 c arrays pointers

我对数组和指针感到很困惑.
请告诉我以下两个代码有什么区别?

int main()
{
    int i,*p;
    for(i=0;i<5;i++)
    {
        p[i]=i;
        printf("%d",p[i]);
    }
return 0;
}

int main()
{
    int i,p[5];
    for(i=0;i<5;i++)
    {
        p[i]=i;
        printf("%d",p[i]);
    }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

Vij*_*jay 7

第一个导致未定义的行为.对于没有UB你需要使用或者分配内存malloccalloc.分配内存会将数据存储在堆中.完成任务后,还需要free分配的内存.

第二个不会导致UB.它将数组数据存储在堆栈中而不是堆上.一旦范围结束,内存将自动从堆栈中释放.