#include <stdio.h>
int main() {
int* str1 = new int; //未进行初始化
int* ptr1 = new int(11); //初始化为11
int* str2 = new int[5]; //分配一个数组空间,未初始化
int* ptr2 = new int[5] {1,2,3,10,20}; //分配数组空间,初始化
*str1 = 12;
for(int k=0;k<5;k++){
*(str2+k)=k*10+10;}
printf("*str1=%d,str1=%p\n", *str1, str1); printf("\n");
printf("*ptr1=%d,ptr1=%p\n", *ptr1, ptr1); printf("\n");
for(int k=0;k<5;k++){
printf("*str2[k]=%d,str2=%p\n", *(str2+k),str2);
}printf("\n");
for(int j=0;j<5;j++){
printf("*ptr2[j]=%d,ptr2=%p\n", *(ptr2+j),ptr2);
}
delete str1, delete ptr1, delete[] str2,delete[] ptr2;
return 0;
}
使用new开辟新空间的方式1:
int* str1 = new int;
此方式只开辟一个指定类型的空间;
使用new开辟新空间的方式2:
int* str2 = new int[5];
此方式开辟指定类型的连续空间,相当于开辟一个数组;
与malloc开辟空间比较详见:C++基础——new和delete动态开辟_c++开辟内存空间-CSDN博客