CC++中指针与数组究竟有何本质区别,竟让初学者如此困惑?

2026-04-19 00:041阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1220个文字,预计阅读时间需要5分钟。

C/C++中指针与数组究竟有何本质区别,竟让初学者如此困惑?

简单介绍下内存分区。内存按使用目的划分为五个区域:

1. 栈区:由系统控制分配和回收。例如,定义变量`int x=0; int *p=NULL;`,变量x和p所占用的内存分配在栈区。

2. 堆区:由程序控制分配和释放。例如,动态分配内存`malloc()`或`new`操作,内存分配在堆区。

这边先简单介绍一下内存分区。

内存按照用途划分为五个区:

1.栈区:由系统控制分配和回收。

例如定义变量 int x = 0; int *p = NULL; 变量所占的内存都是分配在栈区的。

C/C++中指针与数组究竟有何本质区别,竟让初学者如此困惑?

2.堆区:由程序员管理。

在C语言中由 malloc 申请的内存,或者在C++中,用 new 申请的内存,是在堆区中申请的。用完之后需要程序员自己回收,否则会造成内存泄漏。

3.全局区:存储全局变量及静态变量

4.常量区:存储常量。

5.代码区:存储编译之后的二进制代码。

数组和指针具有很大的相似性,实际上,数组也是一种指针,一种有点特别的指针。

阅读全文

本文共计1220个文字,预计阅读时间需要5分钟。

C/C++中指针与数组究竟有何本质区别,竟让初学者如此困惑?

简单介绍下内存分区。内存按使用目的划分为五个区域:

1. 栈区:由系统控制分配和回收。例如,定义变量`int x=0; int *p=NULL;`,变量x和p所占用的内存分配在栈区。

2. 堆区:由程序控制分配和释放。例如,动态分配内存`malloc()`或`new`操作,内存分配在堆区。

这边先简单介绍一下内存分区。

内存按照用途划分为五个区:

1.栈区:由系统控制分配和回收。

例如定义变量 int x = 0; int *p = NULL; 变量所占的内存都是分配在栈区的。

C/C++中指针与数组究竟有何本质区别,竟让初学者如此困惑?

2.堆区:由程序员管理。

在C语言中由 malloc 申请的内存,或者在C++中,用 new 申请的内存,是在堆区中申请的。用完之后需要程序员自己回收,否则会造成内存泄漏。

3.全局区:存储全局变量及静态变量

4.常量区:存储常量。

5.代码区:存储编译之后的二进制代码。

数组和指针具有很大的相似性,实际上,数组也是一种指针,一种有点特别的指针。

阅读全文