Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

CÎÊÌ⼯½õ£¨Ò»£©

Â¥Ö÷·¢±íÓÚ£º2009-07-24 10:11:03ÊÇÕâÑùµÄ,È¥Ò»¼Ò¹«Ë¾ÃæÊÔ,Óöµ½ÁËÒ»µÀcÓïÑÔµÄÌâ,¸öÈË
¸Ð¾õºÜ¹Ö,ÒÔǰû¼û¹ýÀàËÆµÄ,È»ºóÖ÷¿¼¹Ù˵ÕâÊǹØÓÚCÓïÑÔÇ¿ÈõÀàÐÍת»»Ê²Ã´µÄ,ÎҸоõËû
×Ô¼º¶¼²»ÍêÈ«Çå³þ,È»ºó»ØÀ´ÔÚÍøÉϲ鵽ÕâÊÇÓ¢¹ú½£ÇÅ´óÑ§ÍøÉϳöµÄ¼ÆËã»úÌâ :
#include <stdio.h>
#define init_employee(X,Y) {(X),(Y),wage_emp}
typedef struct Employee Em;
struct Employee {int hours,salary;int (*wage)(Em*);};
int wage_emp(Em *ths) {return ths->hours*ths->salary;}
#define init_manager(X,Y,Z) {(X),(Y),wage_man,(Z)}
typedef struct Manager Mn;
struct Manager {int hours,salary;int (*wage)(Mn*);int bonus;};
int wage_man(Mn *ths) {return ths->hours*ths->salary+ths->bonus;}
int main(void) {
Mn m = init_manager(40,10,20);
Em *e= (Em *) &m;
printf("%d\n",e->wage(e));
return 0;
}
×îºóÊä³öÊÇ420,¿ÉÎÒдµÄÊÇ400,ÓÐÇë¸ßÈËÄÜÏêϸ½âÊÍÏÂÕâÌâµÄÒâ˼ô,Ϊʲôº¯ÊýÖ¸Õëµ÷ÓÃ
µÄ²»ÊÇwage_emp,²ÎÊý¶¼²»Æ¥Åä°¢,¶øÇÒEm *e= (Em *) &mµ½µ×ÓÐʲôÒâÒå,ÒòΪËüºóÃæ»¹ÓÐ
Ìí¼ÓµÄÎÊÌâÊÇÓÃC++À´ÖØÐ´²¢ËµÃ÷ºÃ´¦,ÄÇËüÕâôʵÏÖÊÇÏëÓÃCʵÏÖ¶à̬µÄÐÔÖÊô,×ÜÖ®¸Ð¾õ
ºÜ¹Ö,Íû¸ßÈ˽â´ð!!
-------------------------------
nit_managerʱ£¬Ð´Èëµ½½á¹¹ÌåÖеÄÖ¸Õë¾ÍÊÇwage_man£¬¶ø²»ÊÇwage_emp£¬ºóÃæËäÈ»&m±»Ç¿
ÖÆ×ª»»³ÉÁËEm*ÀàÐÍ£¬µ«ÀàÐÍÇ¿ÖÆ×ª»»²¢²»»á¸Ä±ä½á¹¹Ìå±äÁ¿ÖеÄÊý¾Ý¡£Òò´ËÄǸöº¯ÊýÖ¸Õë
Ö¸ÏòµÄÈÔÈ»ÊÇwage_manÕâ¸öº¯Êý¡£
ÕâÀïÔËÓÃÁËһЩÇɺϣºËäÈ»wage_emp¸úwage_manÁ½¸öº¯ÊýµÄÇ©ÃûÊDz»Ò»ÑùµÄ£¬µ«´Óµ×²ãÀ´
¿´£¬²¢ÎÞ¶à´óÇø±ð£¬²ÎÊý¶¼ÊÇÒ»¸öËÄ×Ö½ÚµÄÖ¸Õ룬·µ»ØÖµ¶¼ÊÇint£¬Õâ¾ÍʹµÃËüÃǵĵײãµ÷
ÓûúÖÆÊÇÒ»ÑùµÄ£¬º¯Êýµ÷ÓÃÎÞ·ÇÊDzÎÊýѹջ¡¢Ö¸ÕëÌø×ªÕâÀàÖ¸Á²ÎÊýºÍ·µ»ØÖµÀàÐͶ¼Ò»
Ñù£¬µ÷ÓõÄÖ¸Áî¾Í¿Ï¶¨ÊÇÍêȫһÑùµÄ¡£
Òò´ËËäÈ»ÊÇ´«µÝÒ»¸öEm*ÀàÐ͵IJÎÊý¶øÊµ¼Êµ÷ÓõÄÊÇwage_man£¬µ«ÓÉÓÚÕâЩÇɺϣ¬±àÒëÆ÷¾Í
ÕâÑù±»Çá¶øÒ×¾ÙµØÆÛÆ­……£¬Ò²¾ÍÊÇ˵£¬×îºó±»Êµ¼Êµ÷ÓõÄwage_manÈÔÈ»°Ñ²ÎÊýµ±³ÉMn*£¬
¶øÊµ¼ÊÉÏËüÓÖȷȷʵʵÊǸöMn*£¬ÓÚÊÇÒ²²»»á³öÈκÎÎÊÌâ¡£
Èç¹ûÓÃC++À´Ð´£¬ÓÉÓÚC++ÓÐÄÚÖõØÖ§³Ö¶à̬µÄ»úÖÆ£¬¾ÍÓò»×ÅʹÓÃÕâЩÁîÈ˷ѽâµÄÆÛÆ­±à
ÒëÆ÷µÄÊÖ·¨ÁË¡£
-------------------------------
ʵ¼ÊÉϹ۲ìEmployee ºÍManager µÄ½á¹¹²»ÄÑ·¢ÏÖ
Manager Ö»ÊDZÈEm


Ïà¹ØÎĵµ£º

C ÓïÑÔÊý¾Ý¶ÔÆë

#include <stdio.h>    
struct Foo1
{
   char a;
   int  b;
   char c;
   int  d;
};
#pragma pack (2)
struct Foo2
{
   char a;
   int  b;
   char c;
   int  d; ......

c/c++µÄ֪ʶµãÊÕ¼¯

1.¶¯Ì¬»ñµÃÄÚ´æµÄ´úÂë:
void GetMemory(char **p, int num)
{
  *p = (char *)malloc(sizeof(char) * num);
}
char* GetMemory2(int num)
{
  char* p = (char *)malloc(sizeof(char) * num);
  return p;
}
------------------------------------------
´íÎóµÄ´úÂë:
void Ge ......

C/C++ ʵÏÖÎļþ͸Ã÷¼Ó½âÃÜ

Çë¼û´úÂëÏêϸעÊÍ
//  ÐÞ¸´Éæ¼°ºóÊÓÁбíµÄWin2K¼æÈÝÐÔ
//  Fixes Win2K compatibility regarding lookaside lists.
//
#ifndef _WIN2K_COMPAT_SLIST_USAGE // Add content(Ôö¼ÓÄÚÈÝ)
#define _WIN2K_COMPAT_SLIST_USAGE 
#endif
#include "ntifs.h"
#include "ntdddisk.h"
//
// ÔÚ´úÂëÖпªÆ ......

extern ¡°C"×÷ÓÃ

1¡¢ÔÚcppÎļþÖе÷ÓÃcÎļþÖÐʵÏֵĺ¯ÊýµÄʱºò£¬ÐèÒªÓÃextern "C"ÉùÃ÷¸Ãº¯Êý£¬·ñÔòcpp»á°´Ãû×ָıàºóµÄ
º¯ÊýÃûÈ¥ÕҸú¯Êý¶øÕÒ²»µ½¡£
cppÎļþµ÷ÓÃcÎļþÖк¯ÊýÈçÏ£º
   cÎļþÖÐÓÐÒ»º¯Êý£º
              void Transfer(int a; char b);
&nbs ......

C/C++:³ÌÐòµÄÄÚ´æ·ÖÅ䷽ʽ


2008-07-07 23:32:21
 
1.ÄÚ´æ·ÖÅ䷽ʽ
ÄÚ´æ·ÖÅ䷽ʽÓÐÈýÖÖ£º
[1]´Ó¾²Ì¬´æ´¢ÇøÓò·ÖÅä¡£ÄÚ´æÔÚ³ÌÐò±àÒëµÄʱºò¾ÍÒѾ­·ÖÅäºÃ£¬Õâ¿éÄÚ´æÔÚ³ÌÐòµÄÕû¸öÔËÐÐÆÚ¼ä¶¼´æÔÚ¡£ÀýÈçÈ«¾Ö±äÁ¿£¬static±äÁ¿¡£
[2]ÔÚÕ»ÉÏ´´½¨¡£ÔÚÖ´Ðк¯Êýʱ£¬º¯ÊýÄÚ¾Ö²¿±äÁ¿µÄ´æ´¢µ¥Ôª¶¼¿ÉÒÔÔÚÕ»ÉÏ´´½¨£¬º¯ÊýÖ´ÐнáÊøÊ±ÕâЩ´æ´¢µ¥Ôª×Ô¶¯±»ÊÍ·Å¡£Õ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ