1.Ö¸Õëµ½µ×Äܲ»ÄÜÐÞ¸ÄÆäÖ¸ÏòµÄ³£Á¿×Ö·û´®?½ñÌì×öÒ»¸ö×Ö·û´®ÓÒÒƺ¯Êýʱ£¬Ö±½ÓʹÓÃÖ¸ÕëÀ´ÐÞ¸Ä×Ö·û´®³£Á¿µÄÖµ³öÏÖÁËÆæ¹ÖÔËÐÐʱ´íÎó¡£
´úÂëÈçÏ£º
#include"stdio.h" #include"string.h" void LoopMove(char*pStr,int steps) { char temp ,temp_ch ; //char*cp=pStr ; int i ,j ; int str_len=strlen(pStr) ; for(i=0;i<steps;i++) { temp=*(pStr+str_len-1) ; for(j=str_len-1;j>0;j--) { *(pStr+j)=*(pStr+j-1) ;
} *(pStr+0)=temp ; } } int main() { char *str="abcdefghi" ;
int N=2 ; LoopMove(str,N) ; printf("%s",str) ; return 0 ; } |
ÔËÐÐʱ³öÏÖ´íÎó£ºLoopMove.exe ÖÐµÄ 0x00cf141c ´¦ÓÐδ¾´¦ÀíµÄÒì³£: 0xC0000005: дÈëλÖà 0x00cf5748 ʱ·¢Éú·ÃÎʳåÍ»¡£
³ö´íµÄλÖÃÊÇ£º*(pStr+j)=*(pStr+j-1) ;´Ó´íÎóµÄÀàÐÍÀ´¿´ÊÇÄÚ´æдÈë´íÎó£¬ËµÃ÷¶Ô*(pStr+j)µÄ¸³Öµ·Ç·¨
2.È»ºó×öÁ˸öС²âÊÔ·¢ÏÖÈÔÈ»´æÔÚÕâÑùµÄ´íÎó£¬ËµÃ÷´íÎóÓ¦¸ÃÊÇÒòΪָÕëpÖ¸Ïò×Ö·û´®³£Á¿µ¼Ö¡£
#include<iostream> using namespace std ; int main() { char*p="abcdefghi" ; int str_len=strlen(p) ; char temp=*(p+str_len-1) ; cout<<"temp:"<<temp<<endl ; *(p+str_len-1)='k' ; cout<<"string:"<<p<<endl ;
} |
ÉϳÌÐòÔËÐе½*(p+str_len-1)='k'ÔÚÔËÐÐʱ³ö´í£¬´íÎóÀàÐÍÊÇдÈëÄÚ´æ³åÍ»¡£<¸ßÖÊÁ¿C C++±à³ÌÖ¸ÄÏ>Õâ±¾ÊéÉÏ˵: Ö¸Õëp Ö¸Ïò³£Á¿×Ö·û´®(λÓÚ³£Á¿´æ´¢Çø),³£Á¿×Ö·û´®µÄÄÚÈÝÊDz»¿ÉÒÔ±»Ð޸ĵÄ,ÆóͼÐ޸ij£Á¿×Ö·û´®µÄÄÚÈݶøµ¼ÖÂÔËÐдíÎó¡£ËùÒÔÕâ¸öÎÊÌâ³öÏÖµÄÔÒòÊÇchar*p=¡±abcdefghi¡±,¸³ÖµµÄÊÇ×Ö·û´®³£Á¿£¬´æ´¢ÔÚ³£Á¿´æ´¢Çø£¬¶ø³£Á¿´æ´¢ÇøµÄÄÚÈÝÊÇÎÞ·¨Ð޸ĵġ£
3.Èç¹ûʹÓÃÊý×éÀ´´úÌæµÄ»°£¬Êý¾Ý¾Í´æ´¢ÔÚ¶ÑÕ»¿Õ¼ä£¬¶ÑÕ»¿Õ¼äµÄÄÚÈÝÊÇ¿ÉÒÔÐ޸ĵģ¬¾Í²»»á³öÏÖÔËÐÐʱ´íÎó¡£
#include"stdio.h" #include"string.h" void LoopMove(char*pStr,int steps) { char temp ; //char*cp=pStr ; int i ,j ; int str_len=strlen(pStr) ; for(i=0;i<steps;i++) { temp=*(pStr+str_len-1) ; for(j=str_len-1;j>0;j--) {
*(pStr+j)=*(pStr+j-1) ;
} *(pStr+0)=temp ; } } int main() { char str[]="abcdefghi" ; int N=2 ; LoopMove(str,N) ; printf("%s\n",str) ; return 0 ; } |