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

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 str[100]
extern char * str //error
Êý×éºÍÖ¸ÕëÊÇÁ½ÂëÊ£¡Ö»ÊÇÔÚijЩÇé¿öÏÂΪÁ˼ò»¯±àÒë¶¼µ±×öÖ¸Õë´¦Àí
2.register ²»ÄÜÓÃȡַÔËËã·û£¬ÒòΪ¿ÉÄܲ»´æ·ÅÔÚÄÚ´æÖÐ.
#include <stdio.h>
int main(void)
{
    register int r=10;
    int * ptr=&r;
    printf("%d\n",*ptr);
    return 0;
}
3.sizeofÊǹؼü×Ö²»ÊǺ¯ÊýÒ²²»ÊǺê
(define ²»Êǹؼü×Ö)£¬sizeofÔÚ±àÒëµÄʱºò¾ÍÈ·¶¨ÁË£¬ÓɱàÒëÆ÷Ëã³ö
int i=0;
sizeof(i) //4 ok
sizeof(int) //4 ok
sizeof i   //4 ok
sizeof int //error!
int *p=NULL;
sizeof(p)  //ok 4
sizeof(*p)  //ok 4!
int a[100];
sizeof(a)   //100
sizeof(&a)  //4
sizeof(&a[0]) //4
enum{A,B,C}e;
sizeof(e)   //4
4.void Ö¸Õë
ANSI¹æ¶¨ÒÔ²»ÄܶÔvoid Ö¸Õë½øÐÐËã·¨²Ù×÷
void * vPtr;
vPtr++;     //error
vPtr+=1;   //error
µ«ÔÚGNUÖÐ
ÓÃGCC±àÒë¶¼ÊǺϷ¨µÄ£¡
ÓÃG£«£«±àÒëcppÎļþÈ·ÊDz»ºÏ·¨µÄ£¡
VCûÊÔ¹ý²»ÖªµÀ¡£
5.volatile¹Ø¼ü×Ö
¸æËß±àÒëÆ÷ÿ´ÎʹÓñäÁ¿ÖµµÄʱºò¶¼ÊÇ´ÓÄÚ´æÖжÁ³ö£¬¶ø²»½øÐÐÈκÎÓÅ»¯£¬³£ÓÃÔÚ¶àÏ̱߳à³ÌÖС£
6.¿Õ½á¹¹Ìå¿ÕÀà
struct st{}st;
class cl{}cl;
g++±àÒë½á¹ûsizeof(st)=1 sizeof(cl)=1;
gcc sizeof(st)=0!
7.fleible array
C99ÖУ¬½á¹¹ÌåµÄ×îºóÒ»¸öÔªËØÔÊÐíÊÇ´óСδ֪µÄÊý×飬µ«Õâ¸öÊý×éÇ°Ãæ±ØÐëÓÐÒ»¸öÆäËûÀàÐ͵ijÉÔ±
struct F{int i; char a[0];}   sizeof(F)=4
struct F1{int i;char a[];}    sizeof(F1)=4
F1 * f1;
f1=(F1 *)malloc(sizeof(struct F1)+100*sizeof(char));/*¸øf1·ÖÅä4+100byteµÄ¿Õ¼ä£¬ÕâÑùÊý×éa¾ÍÓÐ100¸öÔªËØÁË*/
sizeof(f1)=4   //!»¹ÊÇ4£¬ËµÃ÷sizeofÊÇÔÚ±àÒëµÄʱºò¾ÍÈ·¶¨ÁË£¡
8.±àд³ÌÐò²âÊÔbig/small endian
bool smallEndian(void)
{
    union endian{int i;char ch;}


Ïà¹ØÎĵµ£º

¿ØÖÆÌ¨³ÌÐòCtrl +C Í˳ö

[DllImport("kernel32.dll",SetLastError=true)]
[return: MarshalAs( UnmanagedType.Bool )]
static extern bool AllocConsole();
[DllImport("kernel32.dll",SetLastError=true)]
[return: MarshalAs( UnmanagedType.Bool )]
static extern bool FreeConsole();
// Delegate type to be used as the Handler Routin ......

Linux ϱàÒëhello world µÄC ÓïÑÔ³ÌÐò

±¾À´ÎÒÓõÄÊÇÕâÑùµÄ³ÌÐò
# include <iostream.h>
int main(void)
{
  int i,j;
  j=0;
  i=j+1;
  cout<<"hello world!"<<endl;
  cout<<"the result is"<<i<<endl;
  return 0;
}
ÀûÓÃg++ -o test test.cpp¡£µ«ÊÇÕâÑùÊÇÓдíÎóµÄ£¬ÌáʾÎÞ·¨´ ......

s3c2410ƽ̨ÏÂlinuxËļü°´¼üÇý¶¯³ÌÐò

#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include<linux/config.h>
#include<linux/module.h>
#include<linux/version.h>
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/errno.h>
#include<linux/sche ......

Delphi Óë C/C++ Êý¾ÝÀàÐͶÔÕÕ±í

Delphi Óë C/C++ Êý¾ÝÀàÐͶÔÕÕ±í
DelphiÊý¾ÝÀàÐÍC/C++
ShorInt
8λÓзûºÅÕûÊý
char
Byte
8λÎÞ·ûºÅÕûÊý
BYTE,unsigned short
SmallInt
16λÓзûºÅÕûÊý
short
Word
16λÎÞ·ûºÅÕûÊý
unsigned short
Integer,LongInt
32λÓзûºÅÕûÊý
int,long
Cardinal,LongWord/DWORD
32λÎÞ·ûºÅÕûÊý
unsigned long
Int6 ......

¡¾ÍƼö¡¿CºÍC++ÓïÑÔѧϰ×ܽá(¿ÉÒÔÓ¦¶ÔÃæÊÔµÄÌâÄ¿)

CºÍC++ÓïÑÔѧϰ×ܽá(×ÊÁÏÀ´×Ô <¸ßÖÊÁ¿C++/C ±à³ÌÖ¸ÄÏ> ÁÖÈñ²©Ê¿ 2001 Äê7 ÔÂ24)
֪ʶ½á¹¹:
1¡¢if,for,switch,goto
2¡¢#define,const
3¡¢Îļþ¿½±´µÄ´úÂë,¶¯Ì¬Éú³ÉÄÚ´æ,¸´ºÏ±í´ïʽ,strcpy,memcpy,sizeof
4¡¢º¯Êý²ÎÊý´«µÝ,ÄÚ´æ·ÖÅ䷽ʽ,ÄÚ´æ´íÎó±íÏÖ,mallocÓënewÇø±ð
5¡¢ÀàÖØÔØ¡¢Òþ²ØÓ븲¸ÇÇø±ð,externÎÊÌâ, ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ