C语言中的指针表达式
以下指针表达式之间有什么区别C语言中的指针表达式,c,C,以下指针表达式之间有什么区别 *ptr++ 第一个,*ptr++,递增指针并计算为指针在递增之前指向的值 第二个,++*ptr,取消对指针的引用并递增指向的值,其值为递增的值 第三个,(*ptr)+,取消对指针的引用并递增指向值,其值是递增之前的指向值 考虑例如,intarr[4]={1,2,3,4}和ptr=&arr[1] 在int val=*ptr++之后,指针ptr指向arr[2],val为2 在int val=++*ptr之后,指针ptr仍然指向arr[1],arr[1]是递增的
*ptr++
第一个,
*ptr++代码>,递增指针并计算为指针在递增之前指向的值
第二个,++*ptr代码>,取消对指针的引用并递增指向的值,其值为递增的值
第三个,(*ptr)+
,取消对指针的引用并递增指向值,其值是递增之前的指向值
考虑例如,intarr[4]={1,2,3,4}代码>和ptr=&arr[1]代码>
- 在
int val=*ptr++之后
,指针ptr
指向arr[2]
,val
为2
- 在
int val=++*ptr之后
,指针ptr
仍然指向arr[1]
,arr[1]
是递增的,所以现在它的值是3,val
- 在
int val=(*ptr)+之后
,指针仍然指向arr[1]
,arr[1]
递增,因此其值现在为3,但val
的旧值为arr[1]
,2
第一个,
*ptr++代码>,递增指针并计算为指针在递增之前指向的值
第二个,++*ptr代码>,取消对指针的引用并递增指向的值,其值为递增的值
第三个,(*ptr)+
,取消对指针的引用并递增指向值,其值是递增之前的指向值
考虑例如,intarr[4]={1,2,3,4}代码>和ptr=&arr[1]代码>
- 在
int val=*ptr++之后
,指针ptr
指向arr[2]
,val
为2
- 在
int val=++*ptr之后
,指针ptr
仍然指向arr[1]
,arr[1]
是递增的,所以现在它的值是3,val
- 在
int val=(*ptr)+之后
,指针仍然指向arr[1]
,arr[1]
递增,因此其值现在为3,但val
的旧值为arr[1]
,2
第一个指针相当于*(ptr++)
,它将返回一个带有当前值的临时指针,然后递增ptr
第二个将递增由ptr
指向的值(假设它是定义了++
的类型),并返回递增的值
第三个将返回由ptr
指向的当前值,然后递增ptr
前
a=0,b=0,但ptr
将指向无意义
int a = 0;
int * ptr = &a;
int b = ++*ptr;
a=1,b=1
int a = 0;
int * ptr = &a;
int b = (*ptr)++;
a=1,b=0第一个指针相当于*(ptr++)
,它将返回一个带有当前值的临时指针,然后递增ptr
第二个将递增由ptr
指向的值(假设它是定义了++
的类型),并返回递增的值
第三个将返回由ptr
指向的当前值,然后递增ptr
前
a=0,b=0,但ptr
将指向无意义
int a = 0;
int * ptr = &a;
int b = ++*ptr;
a=1,b=1
int a = 0;
int * ptr = &a;
int b = (*ptr)++;
a=1,b=0这是家庭作业问题吗?如果是,请贴上标签。不,这不是作业问题。我在一本书中读到,它们是不同的,但它没有说如何。所以我问!!书上怎么说?你读过关于运算符优先级的书吗?这不是一本理论书。这是一本MCQ书,在回答中说他们是不同的。这是一个家庭作业问题吗?如果是,请贴上标签。不,这不是作业问题。我在一本书中读到,它们是不同的,但它没有说如何。所以我问!!书上怎么说?你读过关于运算符优先级的书吗?这不是一本理论书。这是一本MCQ的书,在回答中说他们是不同的。我认为丹尼尔·费舍尔的答案比我的好。我认为丹尼尔·费舍尔的答案比我的好。
int a = 0;
int * ptr = &a;
int b = (*ptr)++;