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

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;
};
#pragma pack ()
struct Foo3
{
   char a;
   char c;
   int  b;
   int  d;
};
struct Foo4
{
   char a;
   int  b;
   char c;
   int  d;
} __attribute__ ((__packed__));
int main(int argc, char **argv)
{
   printf("size of Foo1: %d ", sizeof(struct Foo1));
   printf("size of Foo2: %d ", sizeof(struct Foo2));
   printf("size of Foo3: %d ", sizeof(struct Foo3));
   printf("size of Foo4: %d ", sizeof(struct Foo4));
   return 0;
}
ÏÂÃæµÄС³ÌÐòÊǹØÓÚÊý¾Ý¶ÔÆëµÄÒ»¸öÊÔÑ飬ÔÚÎÒµÄ 2.4 ÄÚºËµÄ Linux ÉÏÔËÐнá¹ûÈçÏ£º
size of Foo1: 16
size of Foo2: 12
size of Foo3: 12
size of Foo4: 10
1¡¢ Foo1 δ¾­¹ýÈκδ¦ÀíµÄ£¬ÓÉÓÚÕûÐÍÐèÒª°´ 4 ×Ö½Ú¶ÔÆë£¬Òò´Ëʵ¼Ê´æ´¢½á¹ûÈçÏ£¬Õ¼Óà 16 ¸ö×Ö½Ú¿Õ¼ä

2¡¢Foo2 ͨ¹ý #pragma pack (2) £¬½«¶ÔÆë·½Ê½¸ÄΪ 2 ×Ö½Ú¶ÔÆë£¬Êµ¼Ê´æ´¢½á¹ûÈçÏ£¬Õ¼Óà 12 ×Ö½Ú¿Õ¼ä
3¡¢ Foo3, ͨ¹ý #pragma pack ()£¬ÓÖ»Ö¸´µ½Ä¬È쵀 4 ×Ö½Ú¶ÔÆë·½Ê½£¬µ«ÊÇÓÉÓÚµ÷ÕûÁ˱äÁ¿µÄ˳Ðò£¬Êµ¼Ê´æ´¢½á¹ûÈçÏ£¬Õ¼Óà 12 ×Ö½Ú¿Õ¼ä

4¡¢Foo4, ͨ¹ý GCC µÄ __packed__ µÄÀ©Õ¹ÊôÐÔ£¬½ûÖ¹¶ÔÆë£¬µÃµ½ÈçϽá¹û£¬Õ¼Óÿռä 10 ×Ö½Ú


Ïà¹ØÎĵµ£º

VB/C++/C#´®¿ÚͨѶԴ´úÂ롾¸½ÏêϸעÊÍ¡¿


VB
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    MSComm1.CommPort = i1
    MSComm1.PortOpen = True
    MSComm1.InputMode = comInputModeBinary
    MSComm1.InBufferCount = 0
& ......

C traps and Puzzles

ÏÂÃæµÄÀý×Ó¶¼ÔÚUbuntu8.04 GCCϱàÒëµÄ½á¹û£¬ÓÐЩûÓиø½á¹û
±à³ÌÒ»¶¨Òª×Ô¼º¶¯ÊÖÊÔÒ»ÊÔ£¡
1.¶¨ÒåÓëÉùÃ÷£¬¶¨ÒåÒª·ÖÅäÄڴ棬ÉùÃ÷Ö»ÊÇÉùÃ÷Ôڱ𴦶¨ÒåÁË
int a;     //¶¨Òå
extern int a;  //ÉùÃ÷
char str[100]
extern char str[]  //ok
char * str[]
extern char str[] //error
char ......

CºÍC++ÓïÑÔѧϰ×ܽá zz

֪ʶ½á¹¹:
1¡¢if,for,switch,goto
2¡¢#define,const
3¡¢Îļþ¿½±´µÄ´úÂë,¶¯Ì¬Éú³ÉÄÚ´æ,¸´ºÏ±í´ïʽ,strcpy,memcpy,sizeof
4¡¢º¯Êý²ÎÊý´«µÝ,ÄÚ´æ·ÖÅ䷽ʽ,ÄÚ´æ´íÎó±íÏÖ,mallocÓënewÇø±ð
5¡¢ÀàÖØÔØ¡¢Òþ²ØÓ븲¸ÇÇø±ð,externÎÊÌâ,º¯Êý²ÎÊýµÄȱʡֵÎÊÌâ,ºê´úÂëÓëÄÚÁªº¯ÊýÇø±ð
6¡¢¹¹ÔìºÍÎö¹¹µÄ´ÎÐò,Stringº¯Êý¶¨Òå
¾ß ......

C/C++³ÌÐòÄÚ´æÖÐÊý¾Ý´æ´¢Çø·ÖÀà

    ÔÚC/C++ÖУ¬ÄÚ´æÖÐÊý¾Ý´æ´¢·Ö³É4¸öÇø£¬·Ö±ðÊǶѡ¢Õ»¡¢È«¾Ö/¾²Ì¬´æ´¢ÇøºÍ³£Á¿´æ´¢Çø¡£
      Õ»(stack)£¬¾ÍÊÇÄÇЩÓɱàÒëÆ÷ÔÚÐèÒªµÄʱºò·ÖÅ䣬ÔÚ²»ÐèÒªµÄʱºò×Ô¶¯Çå³ýµÄ±äÁ¿µÄ´æ´¢Çø¡£ÀïÃæµÄ±äÁ¿Í¨³£ÊǾֲ¿±äÁ¿¡¢º¯Êý²ÎÊýµÈ¡£
      ¶Ñ(heap)£¬Ò»°ãÓ ......

C/C++/Java forÓï¾ä¹æ·¶Ð´·¨Ç³Îö(¶þÖØ¼°ÒÔÉÏÑ­»·)

 ¾Ù¸ö¼òµ¥Àý×Ó£ºÓöþÖØÑ­»·Êä³ö1-100 Êý×Ö£»
 µ±È»ÎÒÕâÀïÊǾÙÀý×ÓÕë¶Ô¶þÖØ¼°ÒÔÉϵÄÑ­»·£¬
ÍêÈ«¿ÉÒÔʹÓõ¥Ñ­»·£¬ÓÚÊDZã·É¿ìµÄÍê³ÉÁËÒÔÏÂ
 ´úÂ룺
  ÈçϾÍÓÃC/C++¾ÙÀý¡£
 C++´úÂë(VS2008):
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(in ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ