【C补充】结构体的内存分配,匈牙利命名法

  1 //LineTable
  2 //先是联合体union,,后是结构体,复合型数据类型的一种自定义类型
  3 
  4 
  5 //内存分配,按整分配。和CPU相关,数据总线
  6 //结构体中内存的分配
  7 /*
  8     内存空洞大,更容易中病毒
  9     
 10     char a[4] = "xyw";
 11 
 12     char b = 'x';
 13     char c = 'y';
 14     char d = 'w';
 15 
 16 
 17     内存分配, 有效字节
 18 */
 19 /*
 20 
 21   特点一
 22 
 23   
 24   如果定义结构体:
 25   int a;
 26   char b;
 27   int c;
 28   char d;
 29   
 30   按照单一型数据类型进行查找   16byte
 31 
 32 
 33   int a;
 34   char b;        //合并   12byte
 35   char c;
 36   int d;            
 37   
 38   按大到小或者按小到大;
 39   int a;
 40   int b;
 41   char c;
 42   char d;
 43 */
 44 
 45 //特点二
 46 /*
 47 
 48   结构体有等值运算
 49   返回多个值,封到结构体。引用,指针
 50 */
 51 
 52 
 53 /*
 54     传参,传地址;
 55     省内存,牺牲效率。
 56     递归,开辟栈区,浪费了内存。
 57     拷贝构造函数。
 58     取引用。
 59 */
 60 
 61 #include <iostream>
 62 
 63 using namespace std;
 64 
 65 
 66 
 67 #define MAX 3
 68 
 69 //_DATA_使用手册,开发手册
 70 //开发,,,写函数(封装函数)  调用函数
 71 //设计的时候,扩展
 72 //代码的封装(函数封装),数据的封装
 73 //函数指针,扩展性。
 74 //
 75 
 76 /*
 77 //函数指针             返回值,参数,参数类型
 78     int  Add(int a, int b)
 79     {
 80         int c = a+b;
 81         return c;
 82     }
 83 
 84     int Sub(int  Add(int , int ), int a, int b)
 85     {
 86                 
 87     }
 88 */
 89 typedef struct _DATA_
 90 {
 91     int iAge;
 92     char szName[20];
 93 }Data,*pData;
 94 
 95 typedef struct _LINETABLE_
 96 {
 97     //    Data DataTemp;
 98     //(匈牙利)Lp 长整型指针命名    char(影响计算机执行效率。)dw wchar(16位) wuchar Long  dword
 99     
100     pData pDataTemp;
101 
102     int iMax;
103     int iSize;
104 }LineTable, *LineTable;
105 
106 
107 //匈牙利命名法
108 class CLineTable
109 {
110     public:
111 
112 
113         
114     protected:
115     
116     private:
117 
118     
119 };
120 
121 bool CLineTable::InitLineTable(LineTable& LineTableTemp)
122 {
123     LineTableTemp.iMax = MAX;
124     LineTableTemp.pDataTemp = new Data[LineTable.iMax];    
125     
126     if(LineTableTemp.pDataTemp == NULL)
127     {
128         return false;
129     }
130     else
131     {
132         memset(LineTableTemp.pDataTemp,0,sizeof(Data)*LineTable.iMax);
133 
134         LineTableTemp.iSize = 0;
135     }
136 }
137 
138 //access
139 //query
140 
141     
142 int main()
143 {
144     LineTable LineTableTemp = {0};
145     
146     
147     return 0;
148 }
149 /*
150 
151 //函数指针
152 #include <iostream>
153 
154 using namespace std;
155 
156 
157 int Add(int a,int b);
158 
159 
160 int Sub(int Add(int,int),int a,int b);
161 
162 
163 void main()
164 {
165 
166 
167 
168 /*    char* p = (char*)0x12ff3d;
169     char a[4] = "xyz";
170 
171     *p = 'A'; 
172 
173     char b = 'x';
174     char c = 'y';
175     char d = 'z';*/
176 
177 
178     cout<<Sub(Add,1,2)<<endl;
179 
180 
181     
182 }
183 
184 
185 int Add(int a,int b)
186 {
187     int c = a+b;
188 
189     return c;
190 }
191 
192 
193 int Sub(int Add(int,int),int a,int b)
194 {
195 
196 
197     return Add(a,b);
198 
199 }
200 
201 */

 

转载于:https://www.cnblogs.com/Lee-geeker/p/3384232.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值