微信扫一扫打赏支持

C++ new的用法

C++ new的用法

一、总结

一句话总结:

new其实就是告诉计算机开辟一段新的空间,但是和一般的声明不同的是,new开辟的空间在堆上,而一般声明的变量存放在栈上。

 

 

1、c++ new关键字和一般声明变量的区别是什么?

new开辟的空间在堆上,而一般声明的变量存放在栈上。

 

2、c++ new出来的东西应该赋值给什么类型的变量?

new出来的是一段空间的首地址。所以一般需要用指针来存放这段地址。

 

 

3、c++ new关键字实例?

int *p = new int(3);

 

 

 

二、C++ new的用法

转自或参考:C++new的用法_清启牧的博客-CSDN博客_c++new
https://blog.csdn.net/weixin_41232202/article/details/96452228

 

new其实就是告诉计算机开辟一段新的空间,但是和一般的声明不同的是,new开辟的空间在堆上,而一般声明的变量存放在栈上

通常来说,当在局部函数中new出一段新的空间,该段空间在局部函数调用结束后仍然能够使用,可以用来向主函数传递参数。

另外需要注意的是,new的使用格式,new出来的是一段空间的首地址。所以一般需要用指针来存放这段地址。具体的代码如下:

 1 #include <iostream>
 2 using namespace std;
 3  
 4 int example1()
 5 {
 6   //可以在new后面直接赋值
 7   int *p = new int(3);
 8   //也可以单独赋值
 9   //*p = 3;
10  
11   //如果不想使用指针,可以定义一个变量,在new之前用“*”表示new出来的内容
12   int q = *new int;
13   q = 1;
14   cout << q << endl;
15  
16   return *p;
17 }
18  
19 int* example2()
20 {
21   //当new一个数组时,同样用一个指针接住数组的首地址
22   int *q = new int[3];
23   for(int i=0; i<3; i++)
24     q[i] = i;
25  
26   return q;
27 }
28  
29 struct student
30 {
31   string name;
32   int score;
33 };
34  
35  
36 student* example3()
37 {
38   //这里是用一个结构体指针接住结构体数组的首地址
39   //对于结构体指针,个人认为目前这种赋值方法比较方便
40   student *stlist = new student[3]{{"abc", 90}, {"bac", 78}, {"ccd", 93}};
41  
42   return stlist;
43 }
44  
45  
46  
47 int main()
48 {
49   int e1 = example1();
50   cout <<"e1: "<< e1 << endl;
51  
52   int *e2 = example2();
53   for(int i=0; i<3; i++)
54     cout << e2[i] << " ";
55   cout << endl;
56  
57  
58   student *st1 = example3();
59  
60   for(int i=0; i<3; i++)
61     cout << st1[i].name << " " << st1[i].score << endl;
62  
63  
64  
65   return 0;
66 }

 

 

 

 

 
posted @ 2020-06-06 08:53  范仁义  阅读(821)  评论(0编辑  收藏  举报