设为首页 加入收藏

TOP

C++声明变量和New空间区别(一)
2013-12-12 14:46:13 来源: 作者: 【 】 浏览:300
Tags:声明 变量 New 空间 区别

  C++ 中声明一个变量,这个变量具有一定的作用域和生命周期。

  作用域: 就是一个变量被引用的范围。

  生命周期:这个变量可以被引用的时间段,不同生命周期的变量,在程序内存中的分布位置不同,一个程序内存分为:代码区、全局数据区、堆区、栈区,不同的内存区域对应不同的生命周期;

  如果没有当前函数以外的指针指向它,则在当前函数结束时,会将当前变量析构;如果有函数以外的指针指向它,则不会被析构;

  如果用New 的方式声明变量,则当前空间会被保存至程序运行结束;

  #include <IOSTREAM>

  using namespace std;

  struct Node{

  int value =1;

  Node *next;

  }n1;

  int main(){

  Node *s  = &n1;

  cout《S->value《ENDL; pre }< 0; return>

  <P></P>

  <P><BR>

  </P>

  <PRE class=brush:java;>#include <IOSTREAM>

  using namespace std;

  struct Node{

  int value =1;

  Node *next;

  }n1;

  int main(){

  Node *s = new Node;

  cout《S->value《ENDL; pre }< 0; return><BR>

  <P>new 相当于重新定义了一个结果体对象,并把地址传给 s;</P>

  <P></P>

  <PRE class=brush:java;>#include <IOSTREAM>

  using namespace std;

  struct Node{

  int value ;

  Node *next;

  }n1,n2,*start;

  int main(){

  n1.value = 1;

  n2.value = 2;

  start = &n1;

  n1.next = &n2;

  for(int i=0;i<2;i++){

  cout《START->value《ENDL; start="start-">next;

  }

  return 0;

  }</PRE><BR>

  <PRE class=brush:java;>#include <IOSTREAM>

  using namespace std;

  struct Node{

  int value ;

  Node *next;

  }*start;

  int main(){

  Node *n1 = new Node;

  Node *n2 = new Node;

  n1->value = 1;

  n2->value = 2;

  n1->next = n2;

  start = n1;

  for(int i=0;i<2;i++){

  cout《START->value《ENDL; start="start-">next;

  }

  return 0;

  }</PRE><BR>

  <BR>

  <P></P>

  <BR>                        </PRE>

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇字符串排序实例详解 下一篇数组的排列  冒泡法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)