[英]Why does derefenced pointer increment/decrement doesn't work?
以下 function 是HackerRank 挑戰的一部分。 為什么取消引用的指針遞增和遞減不起作用? 請看評論。
void send_all_acceptable_packages(town* source, int source_office_index, town* target, int target_office_index)
{
int pkg_idx;
post_office *src_office = &source->offices[source_office_index];
post_office *tgt_office = &target->offices[target_office_index];
volatile int *src_pkg_cnt = &src_office->packages_count;
volatile int *tgt_pkg_cnt = &tgt_office->packages_count;
for (pkg_idx = 0; pkg_idx < *src_pkg_cnt; pkg_idx++) {
package *pkg = &src_office->packages[pkg_idx];
if (is_acceptable(pkg, tgt_office)) {
move_package(pkg_idx, src_office, tgt_office);
pkg_idx -= 1;
/* Start - This doesn't work */
// *src_pkg_cnt--;
// *tgt_pkg_cnt++;
/* End */
/* Start - This works */
src_office->packages_count--;
tgt_office->packages_count++;
/* End */
}
}
}
運算符優先級。 您更改指針,而不是它們指向的值。
應該:
(*src_pkg_cnt)--;
(*tgt_pkg_cnt)++;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.