c语言中移动指针*p++。它移动了多少啊.一个字节吗?

作者&投稿:伏疯 (若有异议请与网页底部的电邮联系)
c语言中,指针变量加1,意味着指针向后移动几个字节~

这跟指针的数据类型有关。会移动和指针所指数据类型所占用空间相同的字节。
如char*型向后移动1个字节,int*型向后移动4个字节。

x= *p++;
相当于
x=*p;p++;
x=*++p;
相当于 ++p;x=*p;
前缀先加1,后取值,后缀先取值,后加1。

函数调用里,或者直接的连续++ ,-- 结果,标准里,是不确定的,由编译器厂商自行决定。

那要看指针变量p是个什么类型,他移动的字节数就是sizeof(指针变量p指向变量的类型)
比如:int *p;p是指向int类型的指针变量,那么p++就移动了sizeof(int)个字节,也就是4字节

不一定,要看这个指针类型的基类型,即:
如果是char *p,那么p++就移动一个字节
如果是int *p,那么p++就移动sizeof(int)个字节。

总之一句话,对于指针p而言,p++移动的字节数是sizeof(*p)

不一定,根据p指向的类型来的
int 的就是sizeof(int)个字节
float 的就是sizeof(float)个字节


c语言中*p是什么意思 c语言中*p的解释
1、c语言中*p表示此指针指向的内存地址中存放的内容。*p一般是一个和指针类型一致的变量或者常量。*p是让程序去那个地址取出数据。2、例子:int a[5]={1,2,3,4,5};int *p=a;\/\/这是在定义指针变量p的同时就直接给它初始化,即把数组a的首地址赋给它。

c语言中移动指针*p++。它移动了多少啊.一个字节吗?
比如:int *p;p是指向int类型的指针变量,那么p++就移动了sizeof(int)个字节,也就是4字节

C语言指针**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是指针变量,其值是一个变量的地址。p收到了哪个变量的地址,就指向哪个变量。该变量成为p的对象。p是p所指向的对象的值。例如:int i=3,*p;p=&i; 注意:p收到i的地址,故p指向i,i是p的对象。printf("%d,%d\\n",i,*p); 输出:3,3 注意:*p是p所指向的对象的值,即i的值。C语言 C...

C语言中指针*p与*p-'0'和*p+'0'有什么区别
p就是指针指向目标的值 -'0' 就是减去48,如果是p指向的是数字字符(一位)就转换为对应的数字的ascii码 + '0'就是加上48,当然就是将p指向的数字(一位)转换为对应的ascii码

关于C语言指针 (*p)[]的问题
1、float (*p)[4],首先(*p)表示p是一个指针变量,它指向一个包含四个float型元素的一维数组。float *p则表示p是一个指针,指向一个float型元素,指针所指对象的类型决定了它递增时,在内存中移动的位数。如果说float型元素占四个字节,则float (*p)[4]中p+1,相当于向后移动4*4=16个字节,...

*p是什么意思
指针变量用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。指针一个占据存储空间的实体在这一段空间起始位置的相对距离值。在C\/C++语言...

C语言中*P都有什么含义
p[]=*p([]),首先,它是一个数组,数组里面保存的是指针 (*p)[]则不同,首先它是一个指针,然后,它指向一个数组,但通常,再定义的时候需要指定所指向数组的大小。示例:include <STDIO.H> int main(int argc, char *argv){ char a[10]="test";char *(p[])={"hello","world!"};\/...

饶河县13280443199: C语言,int a[]={10,20,30},*p=&a;当执行p++后,p向高地址移了几个字节?为什么? -
廖贫复方: 错误,指针类型不符. p的类型是int *,&a的类型是int (*)[3]. 考虑改为: int a[]={10,20,30},(*p)[3]=&a; 的话,p++后,p向高位移动了sizeof(int)*3个字节,在16位编译器里是6个字节,32位里是12个字节. 或者改为: int a[]={10,20,30},*p=&a[0]; 则p++后,p向高位移动了sizeof(int)个字节,在16位编译器里是2个字节,32位里是4个字节.

饶河县13280443199: *P++与*++P的区别 -
廖贫复方: 楼上说的对,因为++的优先级高,所以会先算++,*P++的值是*P,但是它已经向下移动了指针,而*++P是先把P加1,然后取*,就是*(P+1)

饶河县13280443199: c语言中 *p++=i++ 啥意思了 -
廖贫复方: i++ 表示i=i+1 赋值以后再加*p++ 表示指针移动 这句话的意思 是 将i值 赋值给*p 然后i+1,*p+1 再赋值

饶河县13280443199: 在c语言指针中 *p++ 是先给p向后移动一个,然后在取值? 还是先给p引用取值以后再向后移动一个呢?
廖贫复方: x= *p++; 相当于 x=*p;p++; x=*++p; 相当于 ++p;x=*p; 前缀先加1,后取值,后缀先取值,后加1. 函数调用里,或者直接的连续++ ,-- 结果,标准里,是不确定的,由编译器厂商自行决定.

饶河县13280443199: c语言中fp中地址指针是以什么单位位移的? -
廖贫复方: 看指针类型 如: char *p p++ 就移动了一个字节 int *p p++ 就移动了sizeof(int)个字节

饶河县13280443199: c语言中*p++和*++p的区别? -
廖贫复方: *p++ //它相当于*(p++),首先指针p后移,由于对指针是后缀加,所以p++返回p没后移时的指针,如果是数组,那么表达式的值为指针当前所指元素(指针没有后移时)的值*++p //相当于*(++p),指针p先后移,如果是数组,则指向下一个元素,然后++p返回指针下移后的指针.然后*取下移指针后所指向的值

饶河县13280443199: c语言中后移指针,p++;和p=p - >next;是等效的吗?如果不,两者区别是什么呢? -
廖贫复方: 不是等效的.p++ 是将p所指向的位置,往后移动1个.p=p->next; 虽然在单链表中,也是后移的意思,但是,这个next是你自己定义的结构体或其他复合体的成员,next在c中根本不存在,是编写者,自己定义的一个东西,相当于一个变量,你可以定义成next,你也可以定义成nex.如果,你没有定义,就不能使用.

饶河县13280443199: 请问C语言中 *(p ++ )与*(++ P)有什么区别?
廖贫复方: *(p ++ ) 表示 取 p指向的内容,p指针向后移1 *(++ P) 表示 p指针先向后移1,再取p指向的内容 类似有 *p++ 表示p指向的内容+1

饶河县13280443199: c语言指针*p中p++什么意思 -
廖贫复方: **p :二级指针,表示p所指向的地址里面存放的是一个指向类型的指针. *p:一级指针,表示p所指向的地址里面存放的是一个类型的值. 扩展资料: 指针变量可以进行加减运算,例如p++、p+i、p-=i.指针变量的加减运算并不是简单的加上...

饶河县13280443199: C语言中的指针移动问题,纠结了很久,求助~ -
廖贫复方: 看看例子吧:) int a[2]={123,456}; int *p = a;(1) *p++;//执行后p指向a[1]的地址,返回a[0]的值(2) (*p)++;//p指向a[0]的地址不变,执行后a[0]的值加1,返回a[0]的旧值(3) *(p++);//同(1)(4) ++(*p);//同(2),效率稍微比(2)高 ,返回a[0]的新值

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网