zoukankan      html  css  js  c++  java
  • 空间表SpaceList

    比如在建一个成绩管理系统,这时候定义的名字一般都是char szName[20],这样比较浪费,其实不只是定义名字,定义好多变量都这样,并没有体现动态。

    此处出现空间表(SpaceList),通过指针偏移,实现内存的零浪费,但是缺点是无法修改。只适合储存一些不变的东西,比如科目等。

    return this + 1; //跳过此结构体,指针直接到它的后面
     1 // ceshi2.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include <iostream>
     6 #include <Windows.h>
     7 using namespace std;
     8 /*
     9     空间表 SpaceList 
    10 */
    11 typedef struct _BUFFER_OBJECT_
    12 {
    13     int iAge;
    14     char* szName;
    15     void* Sub_1()     //泛型指针
    16     {
    17         return this + 1; 
    18     }
    19 }BUFFER_OBJECT,*PBUFFER_OBJECT;
    20 typedef struct _NODE_OBJECT
    21 {
    22     int iOffset;
    23     BUFFER_OBJECT BufferObject;
    24 }NODE_OBJECT,*PNODE_OBJECT;
    25 int main()
    26 {
    27     PNODE_OBJECT v1 = (PNODE_OBJECT)malloc(4096); 
    28 
    29     PNODE_OBJECT TravelNodeObject = v1;
    30     for (int i = 0; i < 3; i++)
    31     {
    32         cin >> TravelNodeObject->BufferObject.iAge;  //30443
    33         TravelNodeObject->BufferObject.szName = (char*)(TravelNodeObject->BufferObject.Sub_1());
    34         cin >> TravelNodeObject->BufferObject.szName;
    35         TravelNodeObject->iOffset = sizeof(NODE_OBJECT) + strlen(TravelNodeObject->BufferObject.szName);
    36         TravelNodeObject = (PNODE_OBJECT)((UINT_PTR)TravelNodeObject + TravelNodeObject->iOffset);
    37     }
    38     return 0;
    39 }
  • 相关阅读:
    隐式类型转换
    STL::allocator rebind
    Proxy Class(代理类)
    C++ 没有合适的默认构造函数(无参数构造函数)
    E
    C
    Multiplication Puzzle POJ
    Brackets POJ
    Halloween Costumes LightOJ
    ACwing 139. 回文子串的最大长度(二分+Hash)
  • 原文地址:https://www.cnblogs.com/littlepear/p/5944636.html
Copyright © 2011-2022 走看看