介绍

自增自减代码

#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

C语言 指针自增自减加减运算 p++ p+i相关推荐

  1. 易语言练习笔记-大叔篇(3)-加减计算器

    易语言练习笔记-大叔篇(3)-加减计算器 省约时间,直接上代码,界面设计如下: 看代码输入效果,运行效果如下: 看懂的掌声.回复.关注,感谢! 以下没时间不需要看.... 到数值( ) 调用格式: 〈 ...

  2. 关于对C语言中数组名取地址加减等操作的一点探究

    对于数组名取地址强制转换的操作 偶然在晚上学了C语言指针后网页闲逛找题时,被一个数组名取地址搞糊涂了,在自己试验加探索后我稍微悟了一点东西. 代码如下: #include<stdio.h> ...

  3. C语言:自增运算符和自减运算符

    自增运算符 自增运算符的符号是"++",他是单目运算符,结合性从右往左,经常与变量结合使用 自增运算符的作用是使变量增1. 自增运算符有两种情况: ++i; // 前置运算 先增加 ...

  4. c语言实现补码加减,C语言实现用位移运算符进行加减乘…

    最近,在百度知道上回答问题,然后看见有的人问如何用位移运算符去进行加减乘除运算,于是巩固今天就在这总结一下. 先讲讲总体思路: 加法运算:将一个整数用二进制表示,其加法运算就是:相异(^)时,本位为1 ...

  5. 【C语言】无符号大数的加减问题

    无符号大数加.减运算..题目要求输入两个无符号大数,保证一个大数不小于第二个大数,输出它们的和.差. 输入样例: 1234567890987654321333888999666 14765576565 ...

  6. c语言计算器实现简单的四则运算.(加,减,乘,除)实验报告,C语言数据结构“简单计算器。”1、简单计算器。请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程...

    共回答了23个问题采纳率:82.6% #include #define MaxSize 99 void trans(char str[],char exp[]) /*将算术表达式转换成后追表达式*/ ...

  7. C语言抽象数据类型实现复数的加减乘运算、输入实部虚部输出复数,输入复数输出实部虚部

    运行结果 #include<stdio.h> #include<stdlib.h> //头文件 typedef struct Complex //定义结构体类型Complex ...

  8. c语言3u减1,C语言的自增自减运算符及应用

    在C语言中,经常使用自增自减运算符.本文结合实例,对C语言中自增自减运算符的应用技巧进行了分析. 维普资讯 http://doc.xuehai.net J u a fAn a gT a h r olg ...

  9. c语言枚举变量自增报错,C_数据结构与算法(1):C语言基础

    C_数据结构与算法(一):C语言基础 致初学者的我:一切都是由浅入深. 每种语言都有每种语言的特性,基本的特性是相同的,下面依照惯例写hello world,相关编译后面再介绍. // C语言用&qu ...

最新文章

  1. Environment.CurrentDirectory 的一个坑
  2. Missing the OpenSSL lib
  3. HTTP访问一个网站的过程详解
  4. 【原创】请避免GO语言中的携程空跑(CPU突然激增)
  5. python基础代码技巧_Python 代码优化技巧(二)
  6. 面试官系统精讲Java源码及大厂真题 - 48 一起看过的 Java 源码和面试真题
  7. 四川教育考试网全国计算机,四川教育考试院
  8. bzoj 2844: albus就是要第一个出场(线性基)
  9. “21天好习惯“第一期-2
  10. MSMTP+MUTT轻松实现服务器资源监控
  11. 版图与射频IC实习心得
  12. 签到系统、评价系统、后台审核系统前后端接口实现总结
  13. Pam x86_64 and i686 have conflicting man pages
  14. 这一年,我所阐释的Linux哲学
  15. 如何禁用GeForce Experience的奖励广告
  16. [转]小程序登录与授权区别
  17. 分享一个ASCII艺术字(图)集网站
  18. 这就是你要的廉价,廉价版iPhoneX到底便宜在哪?
  19. 知识更新越来越快,但是学习起来越来越困
  20. 如何解决CS0120错误

热门文章

  1. python决策树sklearn_python利用sklearn包编写决策树源代码
  2. 香肠派对电脑版_《香肠派对》是不是除了《和平精英》最成功的吃鸡手游:靠恶搞火了?...
  3. 【转】云社区 博客 博客详情 二维异形件排版算法介绍(一)
  4. 【转】如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)
  5. 【转】国密加密算法SM系列的C#实现方法
  6. 【转】WPF入门教程系列六——布局介绍与Canvas(一)
  7. 【转】PE文件结构详解--(完整版)
  8. 【转】Windows Server 2012 R2 双网卡绑定
  9. Http请求处理流程
  10. php后静态绑定,详解PHP后期静态绑定分析与应用