开发者社区> 问答> 正文

声明int数组

这两个声明之间有什么区别吗?

int x[10]; 与

int* x = new int[10]; 我假设前一个声明(与后一个声明一样)是指针声明,并且两个变量可以被视为相同。这是否意味着它们本质上是相同的? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 13:26:35 519 0
1 条回答
写回答
取消 提交回答
  • #include

    int y[10];

    void doSomething() { int x[10]; int *z = new int[10]; //Do something interesting

    delete []z;
    

    }

    int main() { doSomething();

    } ‏‏‏‏‏‏‏

    int x[10]; -在堆栈上创建大小为10的整数的数组。 -您不必显式删除此内存,因为随着堆栈展开,它会消失。 -其范围仅限于功能doSomething()

    int y[10]; -在BSS /数据段上创建大小为10的整数数组。 -您不必显式删除该内存。 -由于已声明global,因此可以全局访问。

    int *z = new int[10]; -在堆上分配大小为10的整数的动态数组,并将此内存的地址返回给z。 -使用动态内存后,必须明确删除它。使用:

    delete[] z;

    2020-02-09 13:26:56
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载