欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

關于C++結構體的函數調用

在一段利(沒)用(事)鏈(找)表(事)來實現正整數相加的程序中,有一個函數是這樣的,實現了將位數較小的鏈表最高位加到位數較大的鏈表上的功能。

void addMostDigit(List addee, List adder){//addee的位數不小于adder
? ? int index = addee.size() - adder.size();
? ? int sum = addee.get(index)->digit + adder.header->digit;
? ? adder.header = adder.header->next;
?
? ? if (sum < 10)
? ? {
? ? ? ? addee.get(index)->digit = sum;
? ? ? ? return;
? ? }
?
? ? while (sum >= 10){
? ? ? ? addee.get(index)->digit = sum % 10;
?
? ? ? ? if (index == 0)//需要變動最高位
? ? ? ? {
? ? ? ? ? ? Node* newHead = new Node('1');
? ? ? ? ? ? newHead->next = addee.header;
? ? ? ? ? ? addee.header = newHead;
? ? ? ? ? ? break;
? ? ? ? }
?
? ? ? ? sum = addee.get(--index)->digit + sum / 10;
? ? ? ? if (sum < 10)
? ? ? ? {
? ? ? ? ? ? addee.get(index)->digit = sum;
? ? ? ? ? ? break;
? ? ? ? }
? ? }
}

錯誤是很簡單的,此處傳遞的List應該是List*,而非List;這一點相信在交換兩個整數值的函數中就已明確。我犯錯的原因,大概是不知不覺間又用了java的思維——一切都是引用變量。

?

解決方案很簡單,該用地址傳遞即可。

void addMostDigit(List* addee, List* adder){
? ? int index = addee->size() - adder->size();
? ? int sum = addee->get(index)->digit + adder->header->digit;
? ? adder->header = adder->header->next;
? ??
? ? if (sum < 10)
? ? {
? ? ? ? addee->get(index)->digit = sum;
? ? ? ? return;
? ? }
? ??
? ? while (sum >= 10){
? ? ? ? addee->get(index)->digit = sum % 10;
? ? ? ??
? ? ? ? if (index == 0)
? ? ? ? {
? ? ? ? ? ? Node* newHead = new Node('1');
? ? ? ? ? ? newHead->next = addee->header;
? ? ? ? ? ? addee->header = newHead;
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ??
? ? ? ? sum = addee->get(--index)->digit + sum / 10;
? ? ? ? if (sum < 10)
? ? ? ? {
? ? ? ? ? ? addee->get(index)->digit = sum;
? ? ? ? ? ? break;
? ? ? ? }
? ? }
}

從這個角度講,java的原點運算符實際上等價于C++的->,而java編程時的規則,不過是C++可遵守的諸多規則之一而已。

換而言之,在棧幀的調用時,準備的入口參數中,真的包含了List這個struct的實體。那么,如果struct很大的話,這樣的函數調用豈不是花費巨大?如果這樣,那么全部用指針或引用(引用更安全一些),或許會是一種很好的編程方法。

文章鏈接: http://www.qzkangyuan.com/21884.html

文章標題:關于C++結構體的函數調用

文章版權:夢飛科技所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!

聲明:本站所有文章,如無特殊說明或標注,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
建站教程

C++調用結構體函數

2023-7-7 14:03:35

建站教程

c++ c#結構體調用

2023-7-7 14:39:48

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 和平县| 彭泽县| 郓城县| 福建省| 宁远县| 乌苏市| 云和县| 新晃| 阳泉市| 偃师市| 固镇县| 屏南县| 朝阳市| 新晃| 澎湖县| 庆阳市| 定日县| 靖西县| 元氏县| 富顺县| 海城市| 宁远县| 武汉市| 遵化市| 都安| 晋江市| 县级市| 宜章县| 柞水县| 木兰县| 大足县| 金华市| 临清市| 弥勒县| 类乌齐县| 泸州市| 增城市| 富阳市| 大邑县| 榆社县| 宝坻区|