C语言中,对指针p

p++是指针值+1还是加上指针所指向变量数据类型的长度??

我假设楼主是入门者,所以做入门的回答。
p++;
这个表达式等价于: p = p+1; (或者p+=1;)
楼主的困惑发生在对指针、指针的类型及指针的运算的理解不足上。
1. 指针的本质是一个值,代表一个内存地址。所以,指针的基本功能就是指出(point to)一个地址。
2.指针的类型,是指:指针所指出的那个地址里存放的那个数据的类型。也就是 (*p)d的类型。
3. 进行p++或p = p+1;运算隐含一个假设:运算之前的p指向了一个类型为(*p)的数组(这样说是便于入门者理解,也可以说队列)中的某一个元素。p++(或者p=p+1,或p+=1)的结果就是p指向了这个数组的下一个相邻的元素。

地址 内存
0x0000 | |
0x0001 | |
.
.
.
0x80F4 | | <-------p (假设运算前p 的值为 0x80F4)
0x80F5 | |
0x80F6 | |
0x80F7 | |
0x80F8 | |
0x80F9 | |
0x80FA | |

运算之后:
0x80F4 | | <-------p (假设运算前p 的值为 0x80F4)
0x80F5 | | <-------(p++) (当 定义为 char *p )
0x80F6 | | <-------(p++) (当 定义为WORD *p )
0x80F7 | |
0x80F8 | | <-------(p++) (当 定义为DWORD *p )
0x80F9 | |
0x80FA | |
.
.
0x80FF | |
0x8100 | | <-------(p++) (当p 定义为struct StructName *p ,且结构长度为12)

楼主可以继续学习指针的概念。尤其建议探究 指针与数组 的异同,可能会让你豁然开朗。比如:
*p 与 p[0] 等值,同样(p++) 与 p[1] 等值(但p++改变了p),且完全符合C语法。

最后郑重告知楼主:
1. C语言,成于指针,败于指针;
2. 不能百分之百确认前,勿用指针
3. 不能熟练运用指针前,不要声称自己熟练使用C语言
4. 熟练使用C语言后,请大胆、大量的运用指针,包括函数指针
5.下学ASM,上学C++,使用C:精通C
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-12
是指针加一p=p+1.指针下移一个单位。比如如果是int *p,那么就下移4个字节。如果是char *p,就下移一个字节。总之,效果是p指向下一个元素。
第2个回答  2012-05-12
是指针的地址+1,所指的变量的是不变的,变得只是这个变量的地址,也就是位置!
第3个回答  2012-05-12
是指当前指针地址加上1*sizeof(数据类型)

也即指针指向下一个位置
第4个回答  2012-05-12
p++ 是地址加1
*p++ 才是对应的地址的值加1

C语言中,对指针p
1. 指针的本质是一个值,代表一个内存地址。所以,指针的基本功能就是指出(point to)一个地址。2.指针的类型,是指:指针所指出的那个地址里存放的那个数据的类型。也就是 (*p)d的类型。3. 进行p++或p = p+1;运算隐含一个假设:运算之前的p指向了一个类型为(*p)的数组(这样说是便于入门...

c语言指向指针p的指针是什么意思?
1、一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。2、*p=a的意思:将a的值赋给p指针指向的地址的值。3、p=&a的意思是:将a的地址赋给指针p。4、区别:*p是一个值;p是一个地址;两者完全不相同。介绍 指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针...

c语言中* p++代表什么意思?
在C语言中,*p++表示对指针p所指向的值进行访问,并将指针p向后移动一个位置。具体解释如下:p:表示访问指针p所指向的值。p++:表示将指针p向后移动一个位置,即指向下一个元素。所以,*p++的执行顺序是先访问p指向的值,然后将指针p向后移动一个位置。需要注意的是,后缀递增运算符++具有较高...

c语言的指针部分 *p与p区别
c语言的指针部分 *p与p区别如下:1、作用不同 p表示此指针指向的内存地址中存放的内容。p是一个指针变量的名字,表示此指针变量指向的内存地址。2、输出内容的格式不同 p常用在一个和指针类型一致的变量或者常量。p输出一个指针的地址,通常是输出一个16进制的数。3、效果不同 p是让编译器从指定的...

C语言指针**p是什么意思
p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值!例如:int i=10; \/\/定义了一个整型变量 int *p=&i; \/\/定义了一个指针指向这个变量 int **p1=&p; \/\/定义了一个二级指针指向p指针...

C语言%p的含义
格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。p是打印地址的, %x是以十六进制形式打印, 完全不同!另外在64位...

C语言指针**p是什么意思
p :二级指针,表示p所指向的地址里面存放的是一个指向类型的指针。p:一级指针,表示p所指向的地址里面存放的是一个类型的值。

c语言二级指针中二级指针p,*p是地址还是值,为什么有的时候就是值而不...
对于一级指针而言,*p是取值,对于二级指针而言,*p是取地址,但是地址又是无符整形数据,所以在二级指针中你把*p当值来用的话,编译不报错,但是不合规定。

一道C语言题,关于指针的,有语句:int a[10],则哪一项是对指针变量p的正...
B。BD是指针类型,数组名是地址,因此选B。

p在c语言中是什么意思
在C语言中,p也可以指代一个指针。指针是C语言中一种重要的数据类型,它可以存储一个变量的地址。通过指针,我们可以访问或者操作这个变量。在C语言中,我们通常使用*来表示指针操作符,也就是获取指针所指向的变量。因此,当我们看到p在C程序中被使用时,它可能是一个指针变量,也可能是一个存储变量...

相似回答
大家正在搜