1. 使用new 创建格式以及delete删除的格式
a. 创建和删除指针变量个数如下:
new: type_name * pointer_name = new type_name;
delete: delete pointer_name;
b. 创建和删除动态数组格式如下:
new: type_name *pointer_name = new type_name [num_elements];
delete: delete [] pointer_name;
示例如下:
2. 动态数组的使用
动态数组创建后 type_name *pointer_name = new type_name [num_elements];
其中 pointer_name便指向了数组的第一个元素,而*pointer_name则是第1个元素的值
为了更方便的访问其他地址的值,我们将pointer_name[0]来表示第一个地址的值,而不是使用*pointer_name来表示第一个元素的值,后面的值则以此类推,
我们要访问其他数组的值,则只需要将指向第一个数组的地址加一个地址空间即可。
注意: *pointer_name 和pointer_name[0] 则是等价的 ,都指向第一个元素的值;
如上图,p+i指向的是地址,和值的取地址&p[i]指向的都是地址,而p[i]指向的是值
3. 源码:
// new_array.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <stdlib.h>
int main()
{
// 创建动态指针
int *pn = new int;
*pn = 100;
printf("*pn = %d, pn=%d\n\n", *pn, pn);
delete pn;
// 创建动态数组
int* p = new int[10];
for (int i = 0; i < 10; i++)
{
p[i] = i+10;
printf("%d. p[] = %d, p=%d &p=%d\n", i, p[i], p+i, &p[i]);
}
delete[] p;
}
4. 执行结果