介绍
自增自减代码
#include<stdio.h>
#include<string.h>
//指针自增--short
void increase(short *arr,int len)
{int i;arr=&arr[0];for(i=0;i<len;i++){printf("arr[%d]=%d,address=%p\n",i,*arr,arr);arr++;}
}//指针自减--char
void decrease(char *ptr,int len1)
{int i;printf("%s\n",ptr);ptr=&ptr[len1-1];for(i=len1-1;i>=0;i--){printf("ptr[%d]=%c,address=%p\n",i,*ptr,ptr);ptr--;}
}
//整型自减--int
void down(int *arr,int len)
{int i;arr=&arr[len-1];for(i=len-1;i>=0;i--){printf("arr[%d]=%d,address=%p\n",i,*arr,arr);arr--;}
}
//字符自增--char
void up(char *s,int len)
{printf("s=%s\n",s);s=&s[0];int i;for(i=0;i<len;i++){printf("s[%d]=%c,address=%p\n",i,*s,s);s++;}
}
int main()
{short arr[]={1,2,3,7,99};char ptr[]={'>','p','I','0','\0'};//只有""后面才会默认加\0char ptr1[]="hello dq";char *ptr2="www.com.pp";int arr1[]={888,9064,3,-3,-4};int len=sizeof(arr)/sizeof(short);int len1=strlen(ptr);int len2=sizeof(arr1)/sizeof(int);int len3=strlen(ptr1);int len4=strlen(ptr2);printf("short指针自增:\n");increase(arr,len);printf("ptr的自增:\n");up(ptr,len1);printf("ptr1的自增:\n");up(ptr1,len3);printf("ptr2的自增:\n");up(ptr2,len4);printf("int指针自减:\n");down(arr1,len2);printf("char指针自减:\n");decrease(ptr,len1);printf("char ptr1的自减\n");decrease(ptr1,len3);printf("char ptr2的自减\n");decrease(ptr2,len4);printf(" 测试1:\n");printf(" ptr1的地址:%p\n ptr1指向的内容%s\n *ptr1的内容:%c\n ",&ptr1,ptr1,*ptr1);printf(" 测试2:\n");printf(" ptr2本身的地址:%p\n ptr2指向的地址%p\n ptr2指向的内容%s\n *ptr2的内容:%c\n ",&ptr2,ptr2,ptr2,*ptr2);getchar();return 0;
}
输出:
//输出:
//short指针自增:
//arr[0]=1,address=012FFBB4
//arr[1]=2,address=012FFBB6
//arr[2]=3,address=012FFBB8
//arr[3]=7,address=012FFBBA
//arr[4]=99,address=012FFBBC
//ptr的自增:
//s=>pI0
//s[0]=>,address=012FFBA4
//s[1]=p,address=012FFBA5
//s[2]=I,address=012FFBA6
//s[3]=0,address=012FFBA7
//ptr1的自增:
//s=hello dq
//s[0]=h,address=012FFB90
//s[1]=e,address=012FFB91
//s[2]=l,address=012FFB92
//s[3]=l,address=012FFB93
//s[4]=o,address=012FFB94
//s[5]= ,address=012FFB95
//s[6]=d,address=012FFB96
//s[7]=q,address=012FFB97
//ptr2的自增:
//s=www.com.pp
//s[0]=w,address=00D358E0
//s[1]=w,address=00D358E1
//s[2]=w,address=00D358E2
//s[3]=.,address=00D358E3
//s[4]=c,address=00D358E4
//s[5]=o,address=00D358E5
//s[6]=m,address=00D358E6
//s[7]=.,address=00D358E7
//s[8]=p,address=00D358E8
//s[9]=p,address=00D358E9
//int指针自减:
//arr[4]=-4,address=012FFB78
//arr[3]=-3,address=012FFB74
//arr[2]=3,address=012FFB70
//arr[1]=9064,address=012FFB6C
//arr[0]=888,address=012FFB68
//char指针自减:
//>pI0
//ptr[3]=0,address=012FFBA7
//ptr[2]=I,address=012FFBA6
//ptr[1]=p,address=012FFBA5
//ptr[0]=>,address=012FFBA4
//char ptr1的自减
//hello dq
//ptr[7]=q,address=012FFB97
//ptr[6]=d,address=012FFB96
//ptr[5]= ,address=012FFB95
//ptr[4]=o,address=012FFB94
//ptr[3]=l,address=012FFB93
//ptr[2]=l,address=012FFB92
//ptr[1]=e,address=012FFB91
//ptr[0]=h,address=012FFB90
//char ptr2的自减
//www.com.pp
//ptr[9]=p,address=00D358E9
//ptr[8]=p,address=00D358E8
//ptr[7]=.,address=00D358E7
//ptr[6]=m,address=00D358E6
//ptr[5]=o,address=00D358E5
//ptr[4]=c,address=00D358E4
//ptr[3]=.,address=00D358E3
//ptr[2]=w,address=00D358E2
//ptr[1]=w,address=00D358E1
//ptr[0]=w,address=00D358E0
// 测试1:
// ptr1的地址:012FFB90
// ptr1指向的内容hello dq
// *ptr1的内容:h
// 测试2:
// ptr2本身的地址:012FFB84
// ptr2指向的地址00D358E0
// ptr2指向的内容www.com.pp
// *ptr2的内容:w
加减代码
指针加减函数:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//指针加减函数
void move(char *s,int len,int m)
{int i;if(m>=0)//右移{ printf("从前往后移\n");printf("现在处于第%d位:%c,address=%p\n",m,s[m],&s[m]);s+=m;for(i=m;i<len;i++){printf("s[%d]=%c\taddress=%p\n",i,*s,s);s++;}}else//左移{printf("从后往前移\n");//m<0printf("现在处于第%d位:%c,address=%p\n",len+m-1,s[len+m-1],&s[len+m-1]);//s=&s[len+m-1]; 效果一样s+=len+m-1;for(i=len+m-1;i>=0;i--){printf("s[%d]=%c\taddress=%p\n",i,*s,s);s--;}}
}
int main()
{char *s="abcdefghijklmn";printf("s=%s\n",s);printf("右移:\n");move(s,strlen(s),2);printf("左移:\n");move(s,strlen(s),-4);getchar();return 0;
}
输出:
s=abcdefghijklmn
右移:
从前往后移
现在处于第2位:c,address=005857B6
s[2]=c address=005857B6
s[3]=d address=005857B7
s[4]=e address=005857B8
s[5]=f address=005857B9
s[6]=g address=005857BA
s[7]=h address=005857BB
s[8]=i address=005857BC
s[9]=j address=005857BD
s[10]=k address=005857BE
s[11]=l address=005857BF
s[12]=m address=005857C0
s[13]=n address=005857C1
左移:
从后往前移
现在处于第9位:j,address=005857BD
s[9]=j address=005857BD
s[8]=i address=005857BC
s[7]=h address=005857BB
s[6]=g address=005857BA
s[5]=f address=005857B9
s[4]=e address=005857B8
s[3]=d address=005857B7
s[2]=c address=005857B6
s[1]=b address=005857B5
s[0]=a address=005857B4