C¡¢´«Í³ C++
#include <assert.h>¡¡¡¡¡¡¡¡
//É趨²åÈëµã
#include <ctype.h>¡¡¡¡¡¡¡¡
//×Ö·û´¦Àí
#include <errno.h>¡¡¡¡¡¡¡¡
//¶¨Òå´íÎóÂë
#include <float.h>¡¡¡¡¡¡¡¡
//¸¡µãÊý´¦Àí
#include <fstream.h>¡¡¡¡¡¡
//ÎļþÊäÈ룯Êä³ö
#include <iomanip.h>¡¡¡¡¡¡
//²ÎÊý»¯ÊäÈ룯Êä³ö
#include <iostream.h>¡¡¡¡¡¡
//Êý¾ÝÁ÷ÊäÈ룯Êä³ö
#include <limits.h>¡¡¡¡¡¡¡¡
//¶¨Òå¸÷ÖÖÊý¾ÝÀàÐÍ×îÖµ³£Á¿
#include <locale.h>¡¡¡¡¡¡¡¡
//¶¨Òå±¾µØ»¯º¯Êý
#include <math.h>¡¡¡¡¡¡¡¡¡¡
//¶¨ÒåÊýѧº¯Êý
#include <stdio.h>¡¡¡¡¡¡¡¡
//¶¨ÒåÊäÈ룯Êä³öº¯Êý
#include <stdlib.h>¡¡¡¡¡¡¡¡
//¶¨ÒåÔÓÏÊý¼°ÄÚ´æ·ÖÅ亯Êý
#include <string.h>¡¡¡¡¡¡¡¡
//×Ö·û´®´¦Àí
#include <strstrea.h>¡¡¡¡¡¡
//»ùÓÚÊý×éµÄÊäÈ룯Êä³ö
#include <time.h>¡¡¡¡¡¡¡¡¡¡
//¶¨Ò幨ÓÚʱ¼äµÄº¯Êý
#include <wchar.h>¡¡¡¡¡¡¡¡
//¿í×Ö·û´¦Àí¼°ÊäÈ룯Êä³ö
#include <wctype.h>¡¡¡¡¡¡¡¡
//¿í×Ö·û·ÖÀà
/////////////////////////////////////// ......
C¡¢´«Í³ C++
#include <assert.h>¡¡¡¡¡¡¡¡
//É趨²åÈëµã
#include <ctype.h>¡¡¡¡¡¡¡¡
//×Ö·û´¦Àí
#include <errno.h>¡¡¡¡¡¡¡¡
//¶¨Òå´íÎóÂë
#include <float.h>¡¡¡¡¡¡¡¡
//¸¡µãÊý´¦Àí
#include <fstream.h>¡¡¡¡¡¡
//ÎļþÊäÈ룯Êä³ö
#include <iomanip.h>¡¡¡¡¡¡
//²ÎÊý»¯ÊäÈ룯Êä³ö
#include <iostream.h>¡¡¡¡¡¡
//Êý¾ÝÁ÷ÊäÈ룯Êä³ö
#include <limits.h>¡¡¡¡¡¡¡¡
//¶¨Òå¸÷ÖÖÊý¾ÝÀàÐÍ×îÖµ³£Á¿
#include <locale.h>¡¡¡¡¡¡¡¡
//¶¨Òå±¾µØ»¯º¯Êý
#include <math.h>¡¡¡¡¡¡¡¡¡¡
//¶¨ÒåÊýѧº¯Êý
#include <stdio.h>¡¡¡¡¡¡¡¡
//¶¨ÒåÊäÈ룯Êä³öº¯Êý
#include <stdlib.h>¡¡¡¡¡¡¡¡
//¶¨ÒåÔÓÏÊý¼°ÄÚ´æ·ÖÅ亯Êý
#include <string.h>¡¡¡¡¡¡¡¡
//×Ö·û´®´¦Àí
#include <strstrea.h>¡¡¡¡¡¡
//»ùÓÚÊý×éµÄÊäÈ룯Êä³ö
#include <time.h>¡¡¡¡¡¡¡¡¡¡
//¶¨Ò幨ÓÚʱ¼äµÄº¯Êý
#include <wchar.h>¡¡¡¡¡¡¡¡
//¿í×Ö·û´¦Àí¼°ÊäÈ룯Êä³ö
#include <wctype.h>¡¡¡¡¡¡¡¡
//¿í×Ö·û·ÖÀà
/////////////////////////////////////// ......
1.ÒýÑÔ ±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û-¡£
Ðí¶àÃæÊÔÌâ¿´ËÆ¼òµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄstrcpyº¯Êý¶¼¿É¿´³öÃæÊÔÕßÔÚ¼¼ÊõÉϾ¿¾¹´ïµ½ÁËÔõÑùµÄ³Ì
¶È£¬ÎÒÃÇÄÜÕæÕýдºÃÒ»¸östrcpyº¯ÊýÂð£¿ÎÒÃǶ¼¾õµÃ×Ô¼ºÄÜ£¬¿ÉÊÇÎÒÃÇд³öµÄstrcpyºÜ¿ÉÄÜÖ»ÄÜÄõ½10·ÖÖеÄ2·Ö¡£¶ÁÕ߿ɴӱ¾ÎÄ¿´µ½strcpy
º¯Êý´Ó2·Öµ½10·Ö½â´ðµÄÀý×Ó£¬¿´¿´×Ô¼ºÊôÓÚʲôÑùµÄ²ã´Î¡£´ËÍ⣬»¹ÓÐÒ»Ð©ÃæÊÔÌ⿼²éÃæÊÔÕßÃô½ÝµÄ˼άÄÜÁ¦¡£
·ÖÎöÕâÐ©ÃæÊÔÌ⣬±¾Éí°üº¬ºÜÇ¿µÄȤζÐÔ£»¶ø×÷ΪһÃûÑз¢ÈËÔ±£¬Í¨¹ý¶ÔÕâÐ©ÃæÊÔÌâµÄÉîÈëÆÊÎöÔò¿É½øÒ»²½ÔöÇ¿×ÔÉíµÄÄÚ¹¦¡£
2.ÕÒ´íÌâ
ÊÔÌâ1£º
void test1()
{
char string[10];
char* str1 = "0123456789";
strcpy( string, str1 ); }
ÊÔÌâ2£º
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{ str1 = 'a'£»
}
strcpy( string, str1 )£» &nbs ......
1.ÒýÑÔ ±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û-¡£
Ðí¶àÃæÊÔÌâ¿´ËÆ¼òµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄstrcpyº¯Êý¶¼¿É¿´³öÃæÊÔÕßÔÚ¼¼ÊõÉϾ¿¾¹´ïµ½ÁËÔõÑùµÄ³Ì
¶È£¬ÎÒÃÇÄÜÕæÕýдºÃÒ»¸östrcpyº¯ÊýÂð£¿ÎÒÃǶ¼¾õµÃ×Ô¼ºÄÜ£¬¿ÉÊÇÎÒÃÇд³öµÄstrcpyºÜ¿ÉÄÜÖ»ÄÜÄõ½10·ÖÖеÄ2·Ö¡£¶ÁÕ߿ɴӱ¾ÎÄ¿´µ½strcpy
º¯Êý´Ó2·Öµ½10·Ö½â´ðµÄÀý×Ó£¬¿´¿´×Ô¼ºÊôÓÚʲôÑùµÄ²ã´Î¡£´ËÍ⣬»¹ÓÐÒ»Ð©ÃæÊÔÌ⿼²éÃæÊÔÕßÃô½ÝµÄ˼άÄÜÁ¦¡£
·ÖÎöÕâÐ©ÃæÊÔÌ⣬±¾Éí°üº¬ºÜÇ¿µÄȤζÐÔ£»¶ø×÷ΪһÃûÑз¢ÈËÔ±£¬Í¨¹ý¶ÔÕâÐ©ÃæÊÔÌâµÄÉîÈëÆÊÎöÔò¿É½øÒ»²½ÔöÇ¿×ÔÉíµÄÄÚ¹¦¡£
2.ÕÒ´íÌâ
ÊÔÌâ1£º
void test1()
{
char string[10];
char* str1 = "0123456789";
strcpy( string, str1 ); }
ÊÔÌâ2£º
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{ str1 = 'a'£»
}
strcpy( string, str1 )£» &nbs ......
#
ÊÇÉú³É×Ö·û´®£º
#define a(x) #x
a(bc
) => "bc"
##
ÊÇÁ¬½Ó£º
#define a(x) abc##x
a(123) => abc123
#error
ÊÇÉú³É±àÒë´íÎóÏûÏ¢£º
#ifdef abc
#error something wrong...
#endif
//Èç¹ûabcÊÇÒѾ¶¨ÒåµÄºê£¬ÄÇô±àÒëµÄʱºò¾Í»áÏÔʾ´íÎóÏûÏ¢something wrong...
ÔÚËùÓеÄÔ¤´¦ÀíÖ¸ÁîÖУ¬#Pragma
Ö¸Áî¿ÉÄÜÊÇ×ÔÓµÄÁË£¬ËüµÄ×÷ÓÃÊÇÉ趨±àÒëÆ÷µÄ״̬»òÕßÊÇָʾ±àÒëÆ÷Íê³ÉÒ»Ð©ÌØ¶¨µÄ¶¯×÷¡£#pragmaÖ¸Áî¶Ôÿ¸ö±àÒëÆ÷¸ø³öÁËÒ»¸ö·½·¨,ÔÚ±£³ÖÓëCºÍ
C++ÓïÑÔÍêÈ«¼æÈݵÄÇé¿öÏÂ,¸ø³öÖ÷»ú»ò²Ù×÷ϵͳרÓеÄÌØÕ÷¡£ÒÀ¾Ý¶¨Òå,±àÒëָʾÊÇ»úÆ÷»ò²Ù× ......
#
ÊÇÉú³É×Ö·û´®£º
#define a(x) #x
a(bc
) => "bc"
##
ÊÇÁ¬½Ó£º
#define a(x) abc##x
a(123) => abc123
#error
ÊÇÉú³É±àÒë´íÎóÏûÏ¢£º
#ifdef abc
#error something wrong...
#endif
//Èç¹ûabcÊÇÒѾ¶¨ÒåµÄºê£¬ÄÇô±àÒëµÄʱºò¾Í»áÏÔʾ´íÎóÏûÏ¢something wrong...
ÔÚËùÓеÄÔ¤´¦ÀíÖ¸ÁîÖУ¬#Pragma
Ö¸Áî¿ÉÄÜÊÇ×ÔÓµÄÁË£¬ËüµÄ×÷ÓÃÊÇÉ趨±àÒëÆ÷µÄ״̬»òÕßÊÇָʾ±àÒëÆ÷Íê³ÉÒ»Ð©ÌØ¶¨µÄ¶¯×÷¡£#pragmaÖ¸Áî¶Ôÿ¸ö±àÒëÆ÷¸ø³öÁËÒ»¸ö·½·¨,ÔÚ±£³ÖÓëCºÍ
C++ÓïÑÔÍêÈ«¼æÈݵÄÇé¿öÏÂ,¸ø³öÖ÷»ú»ò²Ù×÷ϵͳרÓеÄÌØÕ÷¡£ÒÀ¾Ý¶¨Òå,±àÒëָʾÊÇ»úÆ÷»ò²Ù× ......
ÓÉÓÚ³ÌÐòÔËÐÐʱռÓõÄÄÚ´æ¹ý´ó£¬ËùÒÔÏë°ì·¨¸ø³ÌÐòÊÝÉí¡£
ÔÚµ÷ÊÔÖз¢ÏֽṹÌåÕ¼ÓõÄsize¾¹È»ºÍÔ¤ÏëµÄ²»Ò»Ñù£¬ÔÀ´……
¿´¿´ÏÂÃæ½²µÄ°É£¬¿Ï¶¨»á²»Í÷´Ë¿´Å¶£¡
1,±ÈÈç:
struct{
short a1;
short a2;
short a3;
}A;
struct{
long a1;
short a2;
}B;
sizeof(A)=6, sizeof(B)=8,Ϊʲô£¿
×¢£ºsizeof(short)=2,sizeof(long)=4
ÒòΪ:“³ÉÔ±¶ÔÆëÓÐÒ»¸öÖØÒªµÄÌõ¼þ,¼´Ã¿¸ö³ÉÔ±°´×Ô¼ºµÄ·½Ê½¶ÔÆë.Æä¶ÔÆëµÄ¹æÔòÊÇ,ÿ¸ö³ÉÔ±°´ÆäÀàÐÍµÄ¶ÔÆë²ÎÊý(ͨ³£ÊÇÕâ¸öÀàÐ͵ĴóС)ºÍÖ¸¶¨¶ÔÆë²ÎÊý(ÕâÀïĬÈÏÊÇ8×Ö½Ú)ÖнÏСµÄÒ»¸ö¶ÔÆë.²¢ÇҽṹµÄ³¤¶È±ØÐëΪËùÓùýµÄËùÓÐ¶ÔÆë²ÎÊýµÄÕûÊý±¶,²»¹»¾Í²¹¿Õ×Ö½Ú.”(ÒýÓÃ)
½á¹¹ÌåAÖÐÓÐ3¸öshortÀàÐͱäÁ¿£¬¸÷×ÔÒÔ2×Ö½Ú¶ÔÆë£¬½á¹¹Ìå¶ÔÆë²ÎÊý°´Ä¬ÈϵÄ8×Ö½Ú¶ÔÆë£¬Ôòa1,a2,a3¶¼È¡2×Ö½Ú¶ÔÆë£¬Ôòsizeof(A)Ϊ6£¬ÆäÒ²ÊÇ2µÄÕûÊý±¶£»
BÖÐa1Ϊ4×Ö½Ú¶ÔÆë£¬a2Ϊ2×Ö½Ú¶ÔÆë£¬½á¹¹ÌåĬÈÏ¶ÔÆë²ÎÊýΪ8£¬Ôòa1È¡4×Ö½Ú¶ÔÆë£¬a2È¡2×Ö½Ú¶ÔÆë£¬½á¹¹Ìå´óС6×Ö½Ú£¬6²»Îª4µÄÕûÊý±¶£¬²¹¿Õ×Ö½Ú£¬Ôöµ½8ʱ£¬·ûºÏËùÓÐÌõ¼þ£¬Ôòsizeof(B)Ϊ8£»
¿ÉÒÔÉèÖÃ³É¶ÔÆëµÄ
......
ÓÉÓÚ³ÌÐòÔËÐÐʱռÓõÄÄÚ´æ¹ý´ó£¬ËùÒÔÏë°ì·¨¸ø³ÌÐòÊÝÉí¡£
ÔÚµ÷ÊÔÖз¢ÏֽṹÌåÕ¼ÓõÄsize¾¹È»ºÍÔ¤ÏëµÄ²»Ò»Ñù£¬ÔÀ´……
¿´¿´ÏÂÃæ½²µÄ°É£¬¿Ï¶¨»á²»Í÷´Ë¿´Å¶£¡
1,±ÈÈç:
struct{
short a1;
short a2;
short a3;
}A;
struct{
long a1;
short a2;
}B;
sizeof(A)=6, sizeof(B)=8,Ϊʲô£¿
×¢£ºsizeof(short)=2,sizeof(long)=4
ÒòΪ:“³ÉÔ±¶ÔÆëÓÐÒ»¸öÖØÒªµÄÌõ¼þ,¼´Ã¿¸ö³ÉÔ±°´×Ô¼ºµÄ·½Ê½¶ÔÆë.Æä¶ÔÆëµÄ¹æÔòÊÇ,ÿ¸ö³ÉÔ±°´ÆäÀàÐÍµÄ¶ÔÆë²ÎÊý(ͨ³£ÊÇÕâ¸öÀàÐ͵ĴóС)ºÍÖ¸¶¨¶ÔÆë²ÎÊý(ÕâÀïĬÈÏÊÇ8×Ö½Ú)ÖнÏСµÄÒ»¸ö¶ÔÆë.²¢ÇҽṹµÄ³¤¶È±ØÐëΪËùÓùýµÄËùÓÐ¶ÔÆë²ÎÊýµÄÕûÊý±¶,²»¹»¾Í²¹¿Õ×Ö½Ú.”(ÒýÓÃ)
½á¹¹ÌåAÖÐÓÐ3¸öshortÀàÐͱäÁ¿£¬¸÷×ÔÒÔ2×Ö½Ú¶ÔÆë£¬½á¹¹Ìå¶ÔÆë²ÎÊý°´Ä¬ÈϵÄ8×Ö½Ú¶ÔÆë£¬Ôòa1,a2,a3¶¼È¡2×Ö½Ú¶ÔÆë£¬Ôòsizeof(A)Ϊ6£¬ÆäÒ²ÊÇ2µÄÕûÊý±¶£»
BÖÐa1Ϊ4×Ö½Ú¶ÔÆë£¬a2Ϊ2×Ö½Ú¶ÔÆë£¬½á¹¹ÌåĬÈÏ¶ÔÆë²ÎÊýΪ8£¬Ôòa1È¡4×Ö½Ú¶ÔÆë£¬a2È¡2×Ö½Ú¶ÔÆë£¬½á¹¹Ìå´óС6×Ö½Ú£¬6²»Îª4µÄÕûÊý±¶£¬²¹¿Õ×Ö½Ú£¬Ôöµ½8ʱ£¬·ûºÏËùÓÐÌõ¼þ£¬Ôòsizeof(B)Ϊ8£»
¿ÉÒÔÉèÖÃ³É¶ÔÆëµÄ
......
Ç°ÃæÁ½Æª»ù±¾°ÑÖ¸Õë¸ø½éÉÜÍêÁË£¬ÏàÐÅ´ó¼Ò¶ÔÖ¸ÕëÒѾ²»ÊÇÄÇôİÉúÁË¡£Ò²²»»áÒòΪָÕëºÍÊý×éÖ®¼äµÄ¹ØÏµ¶øµ¼Ö»ìÏýÁË¡£´ó¼Ò¿ÉÄÜÒ²ÆÈ²»¼°´ýÏëÁ˽âϺóÀ´µÄ֪ʶ¡£½ñÌìÎÒÃǾͽéÉÜϽṹÌå¡£
¶ÔÓڽṹÌ壬¼ÈÈ»½Ð½á¹¹Ì壬ÐÎÏóÉÏÎÒÃÇ¿ÉÒÔÀí½âÆä¾ÍÊÇÒ»¶ÑÊý¾Ý¼¯ºÏÔÚÒ»ÆðÐγÉÒ»¸ö½á¹¹¡£¾Í±ÈÈçÒ»¸öѧÉúµÄÐÅÏ¢°üÀ¨£ºÑ§ºÅ¡¢ÐÕÃû¡¢°à¼¶¡¢ÄêÁäµÈµÈ¡£ÕâЩÐÅÏ¢¶¼ÊÇÊôÓÚÕâ¸öѧÉúµÄ£¬Òò´ËÎÒÃǾͿÉÒÔ½«ÕâЩÐÅϢͳһ°ó¶¨ÔÚÒ»Æð¡£ÐγÉÒ»¸öѧÉúʵÌ壬ÕâÀïÓеãC++µÄζµÀ¡£ÎÒÃÇѧCÒ²»¹ÊÇÓбØÒªÕâÑù˼¿¼¡£ÔÚÎÒÃÇÖÜΧ¼¸ºõÿһÑù¶«Î÷¶¼ÓÐËü×Ô¼ºµÄÐÅÏ¢»òÕß×é³É¡£±ÈÈçÒ©Æ·£¬ËüÓÐʲô¹¦Ð§£¬ÓÐʲô³É·ÖµÈµÈ¶¼ÄÜͳһ°ó¶¨ÔÚÒ»ÆðÐγÉÒ»¸öʵÌ壬ÎÒÃÇÔÚ³ÌÐòÖоÍÄÜ·½±ãµÄ·ÃÎÊÕâЩʵÌåµÄÿһ¸öÐÅÏ¢»ò×é³É¡£Òò´Ë£¬µ±ÎÒÃÇÔÚÉè¼ÆÒ»¸ö³ÌÐòµÄʱºò£¬ÎÒÃǾÍÄܰÑһЩ¾ßÓй²Í¬ÌØÐÔ»òÕß×é³ÉÔªËØ¼¯ºÏµ½Ò»Æð¹¹³ÉÒ»¸ö½á¹¹Ìå¡£±ÈÈçÎÒÃǵÄѧÉú¾Í¿ÉÒÔд³É£º
struct SStudent
{
char name[ 13 ]; // ÐÕÃû
char className[ 16 ]; & ......
Ç°ÃæÁ½Æª»ù±¾°ÑÖ¸Õë¸ø½éÉÜÍêÁË£¬ÏàÐÅ´ó¼Ò¶ÔÖ¸ÕëÒѾ²»ÊÇÄÇôİÉúÁË¡£Ò²²»»áÒòΪָÕëºÍÊý×éÖ®¼äµÄ¹ØÏµ¶øµ¼Ö»ìÏýÁË¡£´ó¼Ò¿ÉÄÜÒ²ÆÈ²»¼°´ýÏëÁ˽âϺóÀ´µÄ֪ʶ¡£½ñÌìÎÒÃǾͽéÉÜϽṹÌå¡£
¶ÔÓڽṹÌ壬¼ÈÈ»½Ð½á¹¹Ì壬ÐÎÏóÉÏÎÒÃÇ¿ÉÒÔÀí½âÆä¾ÍÊÇÒ»¶ÑÊý¾Ý¼¯ºÏÔÚÒ»ÆðÐγÉÒ»¸ö½á¹¹¡£¾Í±ÈÈçÒ»¸öѧÉúµÄÐÅÏ¢°üÀ¨£ºÑ§ºÅ¡¢ÐÕÃû¡¢°à¼¶¡¢ÄêÁäµÈµÈ¡£ÕâЩÐÅÏ¢¶¼ÊÇÊôÓÚÕâ¸öѧÉúµÄ£¬Òò´ËÎÒÃǾͿÉÒÔ½«ÕâЩÐÅϢͳһ°ó¶¨ÔÚÒ»Æð¡£ÐγÉÒ»¸öѧÉúʵÌ壬ÕâÀïÓеãC++µÄζµÀ¡£ÎÒÃÇѧCÒ²»¹ÊÇÓбØÒªÕâÑù˼¿¼¡£ÔÚÎÒÃÇÖÜΧ¼¸ºõÿһÑù¶«Î÷¶¼ÓÐËü×Ô¼ºµÄÐÅÏ¢»òÕß×é³É¡£±ÈÈçÒ©Æ·£¬ËüÓÐʲô¹¦Ð§£¬ÓÐʲô³É·ÖµÈµÈ¶¼ÄÜͳһ°ó¶¨ÔÚÒ»ÆðÐγÉÒ»¸öʵÌ壬ÎÒÃÇÔÚ³ÌÐòÖоÍÄÜ·½±ãµÄ·ÃÎÊÕâЩʵÌåµÄÿһ¸öÐÅÏ¢»ò×é³É¡£Òò´Ë£¬µ±ÎÒÃÇÔÚÉè¼ÆÒ»¸ö³ÌÐòµÄʱºò£¬ÎÒÃǾÍÄܰÑһЩ¾ßÓй²Í¬ÌØÐÔ»òÕß×é³ÉÔªËØ¼¯ºÏµ½Ò»Æð¹¹³ÉÒ»¸ö½á¹¹Ìå¡£±ÈÈçÎÒÃǵÄѧÉú¾Í¿ÉÒÔд³É£º
struct SStudent
{
char name[ 13 ]; // ÐÕÃû
char className[ 16 ]; & ......
import java.util.concurrent.Semaphore;
/**
* ³éÏóÈÎÎñ£¬¾ßÌåµÄÖ´ÐÐÈÎÎñ£¬¹éʵÏÖÀฺÔð
*
* @author Administrator
*
*/
public abstract class Task {
public abstract void run();
private Semaphore s;
private boolean hasExisted = false;
public void P(final Semaphore s) throws InterruptedException {
if (s == null) { // ÉêÇë¿ÕµÄÐźÅÁ¿
throw new InterruptedException("²»ÄÜΪ¿Õ");
}
if (hasExisted) {// ÒѾÉêÇëÁËÒ»¸ö×ÊÔ´£¬»¹Ã»ÓÐÊÍ·Å
throw new InterruptedException("ÒѾռÓÃÒ»¸ö×ÊÔ´");
}
s.acquire();// ×èÈû
this.s = s;
hasExisted = true;
}
public boolean V() {
if (!hasExisted) {
return false;// ûմÓÐ×ÊÔ´¾Í²»ÄÜ˵ÊÍ·ÅÁË
}
s.release();//ÊÍ·Å×ÊÔ´
hasExisted = false;
s = null;
return true;
}
}
import java.util.concurrent.Semaphore;
/**
* ÓÃÐźÅÁ¿ÊµÏÖ»¥³â
*
* @author Administrator
*
*/
public class Mutex extends Semaphore {
private static final long serialVersionUID = 1L;
public Mutex() {
super(1);//»¥³âÊÇ ......
import java.util.concurrent.Semaphore;
/**
* ³éÏóÈÎÎñ£¬¾ßÌåµÄÖ´ÐÐÈÎÎñ£¬¹éʵÏÖÀฺÔð
*
* @author Administrator
*
*/
public abstract class Task {
public abstract void run();
private Semaphore s;
private boolean hasExisted = false;
public void P(final Semaphore s) throws InterruptedException {
if (s == null) { // ÉêÇë¿ÕµÄÐźÅÁ¿
throw new InterruptedException("²»ÄÜΪ¿Õ");
}
if (hasExisted) {// ÒѾÉêÇëÁËÒ»¸ö×ÊÔ´£¬»¹Ã»ÓÐÊÍ·Å
throw new InterruptedException("ÒѾռÓÃÒ»¸ö×ÊÔ´");
}
s.acquire();// ×èÈû
this.s = s;
hasExisted = true;
}
public boolean V() {
if (!hasExisted) {
return false;// ûմÓÐ×ÊÔ´¾Í²»ÄÜ˵ÊÍ·ÅÁË
}
s.release();//ÊÍ·Å×ÊÔ´
hasExisted = false;
s = null;
return true;
}
}
import java.util.concurrent.Semaphore;
/**
* ÓÃÐźÅÁ¿ÊµÏÖ»¥³â
*
* @author Administrator
*
*/
public class Mutex extends Semaphore {
private static final long serialVersionUID = 1L;
public Mutex() {
super(1);//»¥³âÊÇ ......