C 为什么不';t复合赋值或迭代运算符在解引用指针上工作
如果我想增加一个指向C 为什么不';t复合赋值或迭代运算符在解引用指针上工作,c,arrays,pointers,C,Arrays,Pointers,如果我想增加一个指向int位置的指针,我不能使用以下方法: *Pntr +=1; *Pntr++; 但是,使用此方法不会出现任何问题: *Pntr = *Pntr + 1; 发生了什么导致这些速记方法不起作用。(还必须指出,我使用的是Visual Studio,它有时会表现得很怪异,所以我想我应该提到这一点) 这将增加指针指向的值 *Pntr++; 这与: *(Pntr++); 它递增指针,取消引用指针的原始值,并丢弃检索到的值 *Pntr = *Pntr + 1; 与第一行一
int
位置的指针,我不能使用以下方法:
*Pntr +=1;
*Pntr++;
但是,使用此方法不会出现任何问题:
*Pntr = *Pntr + 1;
发生了什么导致这些速记方法不起作用。(还必须指出,我使用的是Visual Studio,它有时会表现得很怪异,所以我想我应该提到这一点)
这将增加指针指向的值
*Pntr++;
这与:
*(Pntr++);
它递增指针,取消引用指针的原始值,并丢弃检索到的值
*Pntr = *Pntr + 1;
与第一行一样,这会增加指针指向的值
*Pntr++;
这将增加指针指向的值
*Pntr++;
这与:
*(Pntr++);
它递增指针,取消引用指针的原始值,并丢弃检索到的值
*Pntr = *Pntr + 1;
与第一行一样,这会增加指针指向的值
*Pntr++;
如果我想增加一个指针,它引用一个整数的位置。。。[重点补充]
请注意,当您递增指针时,它将以指针可以指向的对象大小的步长递增
自从你提到-
使用此方法不会出现任何问题:
*Pntr = *Pntr + 1;
*Pntr=*Pntr+1代码>
因此,看起来您想要增加位置处的值,通过Pntr
,通过1
后缀++
运算符的优先级高于一元*
运算符(检查表)。那么,这个表达式呢
*Pntr++;
*Pntr +=1;
将被评估为
*(Pntr++);
这将按int
的大小移动指针Pntr
,然后取消对它的引用。
要增加指针的值,可以执行以下操作:
(*Pntr)++;
您还可以使用前缀++
运算符:
++*Pntr;
表情
*Pntr++;
*Pntr +=1;
与
*Pntr = *Pntr + 1;
并且两者都会将Pntr所指位置的值增加1
如果我想增加一个指针,它引用一个整数的位置。。。[重点补充]
请注意,当您递增指针时,它将以指针可以指向的对象大小的步长递增
自从你提到-
使用此方法不会出现任何问题:
*Pntr = *Pntr + 1;
*Pntr=*Pntr+1代码>
因此,看起来您想要增加位置处的值,通过Pntr
,通过1
后缀++
运算符的优先级高于一元*
运算符(检查表)。那么,这个表达式呢
*Pntr++;
*Pntr +=1;
将被评估为
*(Pntr++);
这将按int
的大小移动指针Pntr
,然后取消对它的引用。
要增加指针的值,可以执行以下操作:
(*Pntr)++;
您还可以使用前缀++
运算符:
++*Pntr;
表情
*Pntr++;
*Pntr +=1;
与
*Pntr = *Pntr + 1;
两者都会将Pntr所指位置的值增加1
,当然,这都是关于“运算符优先级”,以防OP想要在其上放置一个可搜索的名称。当然,这都是关于“运算符优先级”,如果OP想要在其上放置一个可搜索的名称。是什么阻止您使用*Pntr+=1代码>?其行为应与*Pntr=*Pntr+1相同代码>。是什么阻止您使用*Pntr+=1代码>?其行为应与*Pntr=*Pntr+1相同代码>。