2.3 结构体自身指针单独计算原则

  然而若结构体中包含自身的时候,如以下代码:

  代码四:

// 结构体占内存空间的判断.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "String.h"
#include "iostream"
using namespace std;

 

int _tmain(int argc, _TCHAR* argv[])
{
 typedef struct STUDENT_INFO
 {
  char num;
  int age;
  float salary;
  string name;
  string name1;
  STUDENT_INFO *stuInfoNext;
 }*LP_STUDENT_INFO;

 cout<<"申明的结构体占有的内存空间大小为:"<<sizeof(STUDENT_INFO)<<"B字节"<<endl;

 string stuName;
 cout<<"字符串变量占有的固定内存空间大小为:"<<sizeof(stuName)<<"B字节"<<endl;

 return 0;
}

  其运行结果如下图所示:

  可以看出其是在代码三的运行结果的基础上面多加了4B。说明结构体中包含自身的时候其只是一个指针本身占有的内存空间为4B,但同时和规则一中的结果不一样。

  类似于规则二的结果。