关于指针的自增自减

*p++ 先取内容再地址加1如果printf("%d",*p++)输出的依然是*p的地址存放的内容

*--p 地址减一下再取内容

--*p 先取值再减1

*++p 地址加1再取内容

注意:

如果连续输出,上一步结果对下一步有影响
#include "stdio.h"
void main()
{ int a[7]={1,7,10,8,5,11,17};
int *p=a+3;
printf("%d\n",*p++);
printf("%d\n",*++p);
printf("%d\n",*--p);
printf("%d\n",--*p);
printf("%d\n",++*p);
printf("%d\n",*(--p));
}

时间: 2024-10-11 03:58:04

关于指针的自增自减的相关文章

[转]C语言中自增自减运算符教学探究-中国论文网

摘要:C语言教学中,自增自减运算符运用得非常广泛,且具有一定的使用技巧和难度.在诸多运算符中,自增自减运算符是学生最难理解和最易出错的运算符.对自增自减运算符的功能和具体应用进行探究,以期为提高C语言教学效果提供帮助.中国论文网 http://www.xzbu.com/8/view-3865031.htm 关键词:C语言:自增自减运算符:教学效果 中图分类号:G434文献标识码:A文章编号:1672-7800(2012)012-0188-02 0引言 C语言编程设计中,若合理使用自增自减运算符,

C++ Primer 学习笔记_61_重载操作符与转换 --自增/自减操作符

重载操作符与转换 --自增/自减操作符 引言: 自增,自减操作符常常由诸如迭代器这种类实现,这种类提供相似于指针的行为来訪问序列中的元素.比如,能够定义一个类,该类指向一个数组并为该数组中的元素提供訪问检查: class CheckedPtr { public: //这个类没有默认构造函数,必须提供指向数组的指针. /**构造函数的參数是两个指针:一个指向数组的開始,还有一个指向数组的末端. *构造函数用这两个指针初始化 beg 和 end *并将 curr 初始化为指向第一个元素 */ Che

C: printf参数执行顺序与前置后置自增自减的影响

起源: 今天在了解副作用side-effect的过程中,看到了下面的网页,把我带到了由printf引起的一系列问题,纠结了一整天,勉强弄懂. 第一个代码没什么好解释的.而第二个printf("return of swap is %d\tx=%d,y=%d\n",swap(&x,&y),x,y)居然是"return of swap is 1 x=1,y=0",输出的x和y的值并没有改变! 原因在于C语言函数参数的处理是从右到左的压栈顺序(这个我在看第一

前置后置自增自减操作

class Int { friend ostream& operator<<(ostream& os, const Int& i); friend istream& operator>>(istream& is, Int& i); friend bool operator<(const Int& a, const Int& b); private: int value; public: Int():value(0

自增/自减运算符

因为做以下题有感...原来简单的自增运算符也有这么多猫腻 http://blog.csdn.net/zdarks/article/details/8767087 第五题  参考:c程序设计语言2.8章   Vs2015测试: a[6]={0};t=h=0; a[0]=a[0]++ 1 a[1]=++a[1] 1 a[2]=t++ 0 a[3]=++h 1 COUT<<a[4]++ 0 COUT<<++a[5] 1 自增自减只能作用于变量,不能作用于表达式 在不需要使用任何具体值且仅

自增自减运算法的深入理解

例二: int i=3;  int j=4;  int a = i++ + i++;  int b = ++j + ++j;  printf("%d, %d\n", a, b); 问题又来了,i++ + i++是先自增一次,相加,再自增,然后赋值呢,还是先相加赋值然后自增两次呢.另外,++j又将如何表现呢? 结果是:6,12 这下明白了,原来 i++的理解应该是执行完整个表达式的其他操作后,然后才自增,所以例子中的a=3+3=6:而后i再自增2次,i=5:相反,++j是先自增然后再参加

java自增自减运算符

除了这+ - * / % 这5个算术运算符之外其实还有2种 ++ - - 这两个也可以属于算术运算符.他是自增自减运算的,例如:int i = 10; i++; i- - 或 ++i - -i但是这2个比较特殊,他有先运算和后运算一说.++ - -符号在后面的为后运算,++ - -符号在前面的为先运算例如:i++ i- - 这为后运算,++i - -i这为先运算. ++ - - 他是一个缩写的方式,融合了2句代码的缩写. 例如:int i = 100; int a = i; i = i+1; 意

【转】 C语言自增自减运算符深入剖析

转自:http://bbs.csdn.net/topics/330189207 C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:#include <stdio.h> void main()  /*主函数*/ { int a,b,c,d;  a=5; b=5;  c=(a++)+(a++)+(a++);  d=(++b)+(++b)+(++b);  printf("a=%d,b=%d,c=%d,d=%d\n",

【C语言】两个指针(地址)相减

两个指针相减,为两个指针之间间隔这两个指针类型的数目. 如:int *p,*q; p-q=(p地址-q地址)/sizeof(int) #include <stdio.h> int main() { int a[9]={1,2,3,4,5,6,7,8,9}; char *p,*q; int *p2,*q2; p=(char*)a; q=(char*)&a[2]; printf("p=%08X q=%08X a[%d]=%d\n",p,q,q-p,a[q-p]); //