簡體   English   中英

為什么解除引用的指針遞增/遞減不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM