/*
* Exercise 2-5 Page 48
*
* Write the function any(s1,s2), which returns the first location
* in the string s1 where any character from the string s2 occurs,
* or -1 if s1 contains no characters from s2. (The standard library
* function strpbrk does the same job but returns a pointer to the
* location.)
*
*/
Here's a much better solution, by Partha Seetala. This solution has a worst-
case time complexity of only O(n + m) which is considerably better.
......
Èç¹ûÒª¼ÓÈë´Ë¼Æ»®:
1¡¢
·½Ê½1
£º¼ÓÈë
QQ
Ⱥ£º
93684322
¡£
2¡¢
·½Ê½2
£º¼ÓÈë
CSDN
Ⱥ×飺
DS¼Æ»®
¡£
1.1 ±äÁ¿´æ´¢Óò
1.1.1 Ò»¸öʾÀý
pang123huiÊ×ÏÈÌṩÁËÒ»¸öÍøÉÏÁ÷´«µÄѧϰ´úÂëʾÀý£º
int a = 0; //È«¾ÖÇø
void main()
{
int b; //Õ»
char s[] = “abc”; //sÔÚÕ»,abcÔÚÎÄ×Ö³£Á¿Çø
char *p1,*p2; //Õ»
char *p3 = "123456"; //123456ÔÚ³£Á¿Çø£¬p3ÔÚÕ»ÉÏ
static int c =0; //È«¾ÖÇø
p1 = (char *)malloc(10); //p1ÔÚÕ»£¬·ÖÅäµÄ10×Ö½ÚÔÚ¶Ñ
p2 = (char *)malloc(20); //p2ÔÚÕ»£¬·ÖÅäµÄ20×Ö½ÚÔÚ¶Ñ
strcpy(p1, "123456"); //123456·ÅÔÚ³£Á¿Çø
}
Õâ¸ö´úÂëʾÀýÖгöÏÖÁ˓ȫ¾ÖÇø”£¬“Õ»”£¬“ÎÄ×Ö³£Á¿Çø”£¬“¶Ñ”µÈ´ÊÓΪÁËͳһ£¬ÎÒÃÇʹÓá¶Cר¼Ò±à³Ì¡·ÖеÄ˵·¨£º¶ÑÕ»¶Î£¬BSS¶Î£¬Êý¾Ý¶Î£¬Îı¾¶Î¡£
¸÷¸ö¶ÎµÄ×÷ÓÃÈçÏ£º
1¡¢ Îı¾¶Î£º°üº¬³ÌÐòµÄÖ¸ÁËüÔÚ³ÌÐòµÄÖ´Ðйý³ÌÖÐÒ»°ã²»»á¸Ä±ä¡£
2¡¢ Êý¾Ý¶Î£º°üº¬Á˾¹ý³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿£¬ÒÔ¼°ËûÃǵÄÖµ¡£
3¡¢ BSS¶Î£º°üº¬Î´¾ ......
C/C++µ×²ãʵÏÖÖ¸¶¨´ÅÅÌÖ»¶Á ÊÕ²Ø
Ñà¿ñͽдµÄÇý¶¯¹Ò¹³£¬ÏÞÖÆ´ÅÅÌÖ»¶Á£¬ ÓÃÓÚ±£Ö¤ÉæÃܼÆËã»úµÄÎȶ¨£¬Ï൱ÓÚ½«´ÅÅ̱ä³ÉROM #include "ntddk.h"
#include
#include #define DRIVERNAME "OnlyRead(GongXiPeng!)" // for use in messages typedef struct tagDEVICE_EXTENSION {
PDEVICE_OBJECT DeviceObject; // device object this extension belongs to
PDEVICE_OBJECT LowerDeviceObject; // next lower driver in same stack
PDEVICE_OBJECT Pdo; // the PDO
IO_REMOVE_LOCK RemoveLock;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION; VOID RemoveDevice(IN PDEVICE_OBJECT fdo);
NTSTATUS CompleteRequest(IN PIRP Irp, IN NTSTATUS status, IN ULONG_PTR info);
NTSTATUS DispatchForSCSI(IN PDEVICE_OBJECT fido, IN PIRP Irp);
NTSTATUS AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo); NTSTATUS DispatchAny(IN PDEVICE_OBJECT fido, IN PIRP Irp);
NTSTATUS DispatchPower(IN PDEVICE_OBJE ......
C/C++µ×²ãʵÏÖÖ¸¶¨´ÅÅÌÖ»¶Á ÊÕ²Ø
Ñà¿ñͽдµÄÇý¶¯¹Ò¹³£¬ÏÞÖÆ´ÅÅÌÖ»¶Á£¬ ÓÃÓÚ±£Ö¤ÉæÃܼÆËã»úµÄÎȶ¨£¬Ï൱ÓÚ½«´ÅÅ̱ä³ÉROM #include "ntddk.h"
#include
#include #define DRIVERNAME "OnlyRead(GongXiPeng!)" // for use in messages typedef struct tagDEVICE_EXTENSION {
PDEVICE_OBJECT DeviceObject; // device object this extension belongs to
PDEVICE_OBJECT LowerDeviceObject; // next lower driver in same stack
PDEVICE_OBJECT Pdo; // the PDO
IO_REMOVE_LOCK RemoveLock;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION; VOID RemoveDevice(IN PDEVICE_OBJECT fdo);
NTSTATUS CompleteRequest(IN PIRP Irp, IN NTSTATUS status, IN ULONG_PTR info);
NTSTATUS DispatchForSCSI(IN PDEVICE_OBJECT fido, IN PIRP Irp);
NTSTATUS AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo); NTSTATUS DispatchAny(IN PDEVICE_OBJECT fido, IN PIRP Irp);
NTSTATUS DispatchPower(IN PDEVICE_OBJE ......
×ÜÊDZ»Í¬Ñ§ÃÇÎʵ½£¬ÈçºÎѧϰCºÍC++²Å²»Ã£È»£¬²Å²»ÊÇÂÒѧ£¬ÏëÁËһϣ¬ÕâÀï¸ø³öÒ»¸ö×ܵĻظ´¡£
¡¡¡¡Ò»¼ÒÖ®ÑÔ£¬»¶ÓÅÄש¹þ¡£
¡¡¡¡1¡¢¿ÉÒÔ¿¼ÂÇÏÈѧϰC.
¡¡¡¡´ó¶àÊýʱºò£¬ÎÒÃÇѧϰÓïÑÔµÄÄ¿µÄ£¬²»ÊÇΪÁ˳ÉΪһ¸öÓïÑÔר¼Ò£¬¶øÊÇÏ£Íû³ÉΪһ¸ö½â¾öÎÊÌâµÄר¼Ò¡£×öÒ»¸öÓÐÓõijÌÐòÔ±£¬×öÒ»¸ö׬ǮµÄ³ÌÐòÔ±¡£ÎÒÃǵļÛÖµ£¬½«ÌåÏÖÔÚ¿Í»§¼ÛÖµÉÏ£¬¶ø²»ÊÇÓïÑÔдµÃºÃ²»ºÃ¿´¡£
¡¡¡¡C++ÊÇCµÄÒ»¸öÃæÏò¶ÔÏóµÄ½âÊÍ£¬C++ΪCÀ©³äÁË´ó¹æÄ£¹¤³ÌÓ¦Ó㬸´ÔÓµÄϵͳ½á¹¹µÄ×éÖ¯ºÍÕÆ¿Ø·½·¨£¬µ«ÊÇ£¬ÎÒÈÏΪ£¬C++¹Ç×ÓÀﻹÊÇCµÄ¡£
¡¡¡¡±Ï¾¹£¬½â¾ö¾ßÌåÎÊÌ⣬ÿ¸öº¯ÊýÄÚ²¿£¬¶¼ÊÇÓÃCµÄ·½Ê½Ð´³ÌÐò£¬»¹ÊÇÃæÏò¹ý³ÌµÄ¡£
¡¡¡¡Òò´Ë£¬ÏëҪѧϰºÃC++£¬ÎҵĽ¨Ò飬ÏÈѧϰC£¬ÏÈѧ½â¾öÎÊÌâµÄÄÜÁ¦£¬ÔÙÌÖÂÛ½â¾ö´óÎÊÌâµÄÄÜÁ¦¡£¾ÍÊÇÏÈѧϰÔõô×ß·£¬ÔÙѧϰÔõôÅܲ½¡£
¡¡¡¡2¡¢Ñ§Ï°CµÄ¹ý³ÌÖУ¬Ò»¶¨ÒªÀí½â½á¹¹»¯±à³Ì˼ά¡£
¡¡¡¡ÎªÊ²Ã´ÄØ£¬ÎÒÇ°ÃæÓÐÎÄÕÂ˵¹ý£¬Èí¼þÓïÑԵķ¢Õ¹¹ý³Ì£¬¾ÍÊÇÒ»¸öÊý¾Ý˽Óл¯µÄ¹ý³Ì£¬´óÐ͹¤³ÌÓ¦Óã¬Ç¿µ÷¸ßÄÚ¾Û£¬µÍñîºÏ£¬Ä£¿é»¯Éè¼Æ£¬±£³Ö´úÂë×î´óµÄÁé»îÐԺͰ²È«ÐÔ¡£
ÕâÊÇÏÖ´ú¹¤³Ì»¯¿ª·¢µÄºËÐĺÍÁé»ê¡£
¡¡¡¡Òò´Ë£¬ÀûÓÃCÕâÃÅÓïÑÔÈëÃÅ£¬½è´ËÀí½â½á¹¹»¯¿ª·¢Ë¼Î¬£¬¿ÉÒÔ˵ÊǸöºÜ·½±ãµÄ·×Ó¡£ÒòΪCµÄº¯Êý ......
×ÜÊDZ»Í¬Ñ§ÃÇÎʵ½£¬ÈçºÎѧϰCºÍC++²Å²»Ã£È»£¬²Å²»ÊÇÂÒѧ£¬ÏëÁËһϣ¬ÕâÀï¸ø³öÒ»¸ö×ܵĻظ´¡£
¡¡¡¡Ò»¼ÒÖ®ÑÔ£¬»¶ÓÅÄש¹þ¡£
¡¡¡¡1¡¢¿ÉÒÔ¿¼ÂÇÏÈѧϰC.
¡¡¡¡´ó¶àÊýʱºò£¬ÎÒÃÇѧϰÓïÑÔµÄÄ¿µÄ£¬²»ÊÇΪÁ˳ÉΪһ¸öÓïÑÔר¼Ò£¬¶øÊÇÏ£Íû³ÉΪһ¸ö½â¾öÎÊÌâµÄר¼Ò¡£×öÒ»¸öÓÐÓõijÌÐòÔ±£¬×öÒ»¸ö׬ǮµÄ³ÌÐòÔ±¡£ÎÒÃǵļÛÖµ£¬½«ÌåÏÖÔÚ¿Í»§¼ÛÖµÉÏ£¬¶ø²»ÊÇÓïÑÔдµÃºÃ²»ºÃ¿´¡£
¡¡¡¡C++ÊÇCµÄÒ»¸öÃæÏò¶ÔÏóµÄ½âÊÍ£¬C++ΪCÀ©³äÁË´ó¹æÄ£¹¤³ÌÓ¦Ó㬸´ÔÓµÄϵͳ½á¹¹µÄ×éÖ¯ºÍÕÆ¿Ø·½·¨£¬µ«ÊÇ£¬ÎÒÈÏΪ£¬C++¹Ç×ÓÀﻹÊÇCµÄ¡£
¡¡¡¡±Ï¾¹£¬½â¾ö¾ßÌåÎÊÌ⣬ÿ¸öº¯ÊýÄÚ²¿£¬¶¼ÊÇÓÃCµÄ·½Ê½Ð´³ÌÐò£¬»¹ÊÇÃæÏò¹ý³ÌµÄ¡£
¡¡¡¡Òò´Ë£¬ÏëҪѧϰºÃC++£¬ÎҵĽ¨Ò飬ÏÈѧϰC£¬ÏÈѧ½â¾öÎÊÌâµÄÄÜÁ¦£¬ÔÙÌÖÂÛ½â¾ö´óÎÊÌâµÄÄÜÁ¦¡£¾ÍÊÇÏÈѧϰÔõô×ß·£¬ÔÙѧϰÔõôÅܲ½¡£
¡¡¡¡2¡¢Ñ§Ï°CµÄ¹ý³ÌÖУ¬Ò»¶¨ÒªÀí½â½á¹¹»¯±à³Ì˼ά¡£
¡¡¡¡ÎªÊ²Ã´ÄØ£¬ÎÒÇ°ÃæÓÐÎÄÕÂ˵¹ý£¬Èí¼þÓïÑԵķ¢Õ¹¹ý³Ì£¬¾ÍÊÇÒ»¸öÊý¾Ý˽Óл¯µÄ¹ý³Ì£¬´óÐ͹¤³ÌÓ¦Óã¬Ç¿µ÷¸ßÄÚ¾Û£¬µÍñîºÏ£¬Ä£¿é»¯Éè¼Æ£¬±£³Ö´úÂë×î´óµÄÁé»îÐԺͰ²È«ÐÔ¡£
ÕâÊÇÏÖ´ú¹¤³Ì»¯¿ª·¢µÄºËÐĺÍÁé»ê¡£
¡¡¡¡Òò´Ë£¬ÀûÓÃCÕâÃÅÓïÑÔÈëÃÅ£¬½è´ËÀí½â½á¹¹»¯¿ª·¢Ë¼Î¬£¬¿ÉÒÔ˵ÊǸöºÜ·½±ãµÄ·×Ó¡£ÒòΪCµÄº¯Êý ......
CÖвÉÓÃÁ˲»Í¬µÄµ÷Ó÷½Ê½À´µ÷Óú¯Êý£¬ÕâÀïµÄº¯Êýµ÷ÓøÅÄî¿ÉÄÜÓëÎÒÃÇͨ³£ËùÀí½âµÄº¯Êýµ÷ÓÃÓÐËù²»Í¬£¬ËüÃÇÖ¸µÄÊÇ´¦ÀíÆ÷ÔÚ´¦Àíº¯ÊýÉϵIJîÒì¡£Àí½âÕâЩ²»Í¬µÄ·½Ê½ÓÐÖúÓÚÎÒÃÇÀ´µ÷ÊÔ³ÌÐòºÍÁ´½ÓÎÒÃǵĴúÂë¡£ÔÚ´ËÎÒÏëÌÖÂÛÒ»ÏÂÖ÷ÒªµÄËÄÖÖº¯Êýµ÷Ó÷½·¨ÒÔ¼°Ö®¼äµÄÇø±ð£¬ËüÃÇÊÇ__stdcall¡¢__cdecl¡¢__fastcall¡¢thiscall¡£µ±È»£¬»¹ÓÐһЩ¸ü¼Ó²»³£Óõĺ¯Êýµ÷Ó÷½·¨±ÈÈçnaked callÎÒÒ²½«Ë³±ãÌá¼°¡£
²»Í¬µÄº¯Êýµ÷Ó÷½·¨Ö®¼äµÄÖ÷ÒªÓÐÒÔÏÂÒ»Ð©Çø±ð£º
¢Ù µ±²ÎÊý¸öÊý¶àÓÚÒ»¸öʱ£¬°´ÕÕʲô˳Ðò°Ñ²ÎÊýѹÈë¶ÑÕ»º¯Êýµ÷Óúó
¢Ú ËÀ´»Ö¸´¶ÑÕ»
¢Û ±àÒëºóµÄÐÞÊÎÃû¹æÔò
__stdcall£º½«²ÎÊýѹջÊǰ´PASCALÓïÑÔµÄ˳Ðò£¨´ÓÓÒµ½×󣩣¬Í¨³£ÓÃÓÚWINAPIÖС£ËüÊÇÓɱ»µ÷ÓÃÕß½«²ÎÊý´ÓÕ»ÖÐÇå³ýµÄ,ËùÒÔËüµÄ±àÒëÎļþ±È__cdeclС¡£__stdcallÊÇWindows APIº¯ÊýÖÐĬÈϵĵ÷ÓÃÔ¼¶¨£¬±»µ÷º¯Êý×Ô¼ºÔÚÍ˳öʱÇå¿Õ¶ÑÕ»¡£ÕâÖÖµ÷Ó÷½Ê½²»ÄÜʵÏÖ±ä²Îº¯Êý£¬ÒòΪ±»µ÷º¯Êý²»ÄÜÊÂÏÈÖªµÀµ¯Õ»ÊýÁ¿£¬µ«ÔÚÖ÷µ÷º¯ÊýÖÐÊÇ¿ÉÒÔ×öµ½µÄ£¬ÒòΪ²ÎÊýÊýÁ¿ÓÉÖ÷µ÷º¯ÊýÈ·¶¨¡£VC½«º¯Êý±àÒëºó»áÔÚº¯ÊýÃûÇ°Ãæ¼ÓÉÏÏ»®Ïßǰ׺£¬ÔÚº¯ÊýÃûºó¼ÓÉÏ"@"ºÍ²ÎÊýµÄ×Ö½ÚÊý¡£È纯Êýint func(int a, double b)µÄÐÞÊÎÃûÊÇ_func@12¡£
±àÒëÑ¡Ïî/Gz¡£
× ......
Linux C¡¡¡¡alarmº¯Êý---Çë¿´×îºó
¡¡¡¡alarmÒ²³ÆÎªÄÖÖÓº¯Êý£¬Ëü¿ÉÒÔÔÙ½ø³ÌÖÐÉèÖÃÒ»¸ö¶¨Ê±Æ÷£¬µ±¶¨Ê±Æ÷Ö¸¶¨µÄʱ¼äµ½Ê±£¬ËüÏò½ø³Ç·¢ËÍSIGALARMÐźš£Òª×¢ÒâµÄÊÇ£¬Ò»¸ö½ø³ÌÖ»ÄÜÓÐÒ»¸öÄÖÖÓʱ¼ä£¬Èç¹ûÔÚµ÷ÓÃalarm֮ǰÒÑÉèÖùýÄÖÖÓʱ¼ä£¬ÔòÈκÎÒÔǰµÄÄÖÖÓʱ¼ä¶¼±»ÐÂÖµËù´úÌæ¡£
ËùÐèÍ·Îļþ
¡¡¡¡#include<unistd.h>
º¯ÊýÔÐÍ
¡¡¡¡unsigned int alarm£¨unsigned int seconds)
º¯Êý²ÎÊý
¡¡¡¡seconds:Ö¸¶¨ÃëÊý
º¯Êý·µ»ØÖµ
¡¡¡¡³É¹¦£ºÈç¹ûµ÷ÓôËalarm£¨£©Ç°£¬½ø³ÌÒѾÉèÖÃÁËÄÖÖÓʱ¼ä£¬Ôò·µ»ØÉÏÒ»¸öÄÖÖÓʱ¼äµÄÊ£Óàʱ¼ä£¬·ñÔò·µ»Ø0¡£
¡¡¡¡³ö´í£º-1
³ÌÐòʾÀý
¡¡¡¡#include<unistd.h>
¡¡¡¡#include<stdio.h>
¡¡¡¡#include<stdlib.h>
¡¡¡¡int main()
¡¡¡¡{
¡¡¡¡int ret;
¡¡¡¡ret = alarm(5);
¡¡¡¡pause();
¡¡¡¡printf("i have been waken up.\n", ret);//´Ë¾ä²¢²»Ö´ÐÐ
¡¡¡¡return 0;
¡¡¡¡}
µ±ÔÚµ÷ÓÃalarm()ǰÒѾÉèÖÃÁËÒ»¸öÄÖÖÓ£¬ÄÇôÎÒÃÇ¿ÉÒÔµ÷ÓÃalarm(0)À´È¡Ïû´ËÄÖÖÓ£¬²¢·µ»ØÊ£Óàʱ¼ä¡£ ......
Linux C¡¡¡¡alarmº¯Êý---Çë¿´×îºó
¡¡¡¡alarmÒ²³ÆÎªÄÖÖÓº¯Êý£¬Ëü¿ÉÒÔÔÙ½ø³ÌÖÐÉèÖÃÒ»¸ö¶¨Ê±Æ÷£¬µ±¶¨Ê±Æ÷Ö¸¶¨µÄʱ¼äµ½Ê±£¬ËüÏò½ø³Ç·¢ËÍSIGALARMÐźš£Òª×¢ÒâµÄÊÇ£¬Ò»¸ö½ø³ÌÖ»ÄÜÓÐÒ»¸öÄÖÖÓʱ¼ä£¬Èç¹ûÔÚµ÷ÓÃalarm֮ǰÒÑÉèÖùýÄÖÖÓʱ¼ä£¬ÔòÈκÎÒÔǰµÄÄÖÖÓʱ¼ä¶¼±»ÐÂÖµËù´úÌæ¡£
ËùÐèÍ·Îļþ
¡¡¡¡#include<unistd.h>
º¯ÊýÔÐÍ
¡¡¡¡unsigned int alarm£¨unsigned int seconds)
º¯Êý²ÎÊý
¡¡¡¡seconds:Ö¸¶¨ÃëÊý
º¯Êý·µ»ØÖµ
¡¡¡¡³É¹¦£ºÈç¹ûµ÷ÓôËalarm£¨£©Ç°£¬½ø³ÌÒѾÉèÖÃÁËÄÖÖÓʱ¼ä£¬Ôò·µ»ØÉÏÒ»¸öÄÖÖÓʱ¼äµÄÊ£Óàʱ¼ä£¬·ñÔò·µ»Ø0¡£
¡¡¡¡³ö´í£º-1
³ÌÐòʾÀý
¡¡¡¡#include<unistd.h>
¡¡¡¡#include<stdio.h>
¡¡¡¡#include<stdlib.h>
¡¡¡¡int main()
¡¡¡¡{
¡¡¡¡int ret;
¡¡¡¡ret = alarm(5);
¡¡¡¡pause();
¡¡¡¡printf("i have been waken up.\n", ret);//´Ë¾ä²¢²»Ö´ÐÐ
¡¡¡¡return 0;
¡¡¡¡}
µ±ÔÚµ÷ÓÃalarm()ǰÒѾÉèÖÃÁËÒ»¸öÄÖÖÓ£¬ÄÇôÎÒÃÇ¿ÉÒÔµ÷ÓÃalarm(0)À´È¡Ïû´ËÄÖÖÓ£¬²¢·µ»ØÊ£Óàʱ¼ä¡£ ......