Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么不';t复合赋值或迭代运算符在解引用指针上工作_C_Arrays_Pointers - Fatal编程技术网

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相同