1. 程式人生 > >父函式與子函式

父函式與子函式

在父函式中呼叫子函式時,要如何使得父函式中的值也改變呢?我們以常見的數字交換問題來舉例:如圖所示:在子函式中列印結果正確,如圖所示,在父函式中列印結果不正確。那麼究竟是為什麼不正確呢?

原因在於,父函式中a,b的值是10,20傳到子函式中去相當於給子函式的a,b賦值,子函式中a,b的值做了交換並沒有影響到父函式中a,b的值。他們所屬不同的函式中,地址不同,也就不是同一個a和b。這是我們常用的交換變數值的方法。那麼,指標作為一種存放地址的變數該如何實現變數值的交換呢?方法一:很明顯,這種方法是錯誤的。通過除錯來尋找原因通過除錯我們發現,問題在於引入了指標後我們只是將指標所儲存的地址做了交換,而變數本身的值並沒有交換。方法二:程式直接崩潰。通過除錯,我們可以發現在"*tmp=*p1"時錯誤,這是為什麼呢?這是因為“*tmp”是一個無法訪問的指標變數,也就是野指標或者叫做懸掛指標。方法三:
至此,我們終於解決了這個問題,分析程式可以發現,這次是將指標進行了解引用,將兩個指標所對應的變數值進行了交換,而指標所儲存的地址並沒有改變,也就最終交換成功。綜上,我們可以得到在父函式中呼叫子函式時,子函式的改變要影響父函式,必須: 1、傳指標  2、解引用

相關推薦

函式函式

在父函式中呼叫子函式時,要如何使得父函式中的值也改變呢?我們以常見的數字交換問題來舉例:如圖所示:在子函式中列印結果正確,如圖所示,在父函式中列印結果不正確。那麼究竟是為什麼不正確呢?原因在於,父函式中a,b的值是10,20傳到子函式中去相當於給子函式的a,b賦值,子函式中a

Matlab基礎 主函式函式的呼叫關係

% 主函式與子函式呼叫規則 % 主函式能夠呼叫子函式,子函式能呼叫子函式,但子函式不能呼叫主函式 %例子 function s=myfun % 檔名myfun.m num=input('輸入一個正整數

C++類關係以及函式過載、覆蓋和隱藏規則

今天去HTC面試,筆試考了邏輯、c語言、c++語言幾個部分,C/C++考的全是基本語法,沒有考演算法。C語言部分做的還不錯,C++部分卻做的那麼多不確定,其中大部分是C++父子類之間關係以及函式過載、覆蓋以及隱藏規則。 在C++語言中,虛擬函式是非常重要的概念,虛擬函式是

shell指令碼中的函式shell

shell指令碼中的函式與子shell 原文https://www.jianshu.com/p/7db79d7997b5 函式 函式的使用 bash中也有函式。一個函式就是一個子程式,是用於實現一串操作的程式碼塊。bash中的函式的形式如下: functi

關於css中元素元素之間margin-top的問題

可用 技術分享 一個 src 文檔流 重疊 cond one left 之前在使用經常遇到下面的問題: html: 1 <div class="top"> 2 <div class="one">I‘m the first!</div&

maven(二) maven項目構建ssh工程(工程模塊的拆分聚合)

子模塊 mbo warnings 找不到 .cn scope spl template opened         前一節我們明白了maven是個什麽玩意,這一節就來講講他的一個重要的應用場景,也就是通過maven將一個ssh項目分割為不同的幾個部分獨立開發,很重要,加油

JavaSE8基礎 當類中的成員變量重名了,使用super.名字 來訪問類的成員變量

public xtend tca ima his window logs java brush os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0)

總結來說 mode 取值 受容器控件共同決定

很多 tools too data 指定 wid 完全 child 設置 在自定義控件時為了滿足特定需求,widget大都是我們自己測量的。大家都知道測量時最重要的步驟就是重寫onMeasure方法,來計算出寬高。 這裏面的MeasureSpec 很重要,大家也都知道,它是

Spring - 容器容器

pos pat 不能 文件中 spa c中 proxy -m 控制 一、Spring容器(父容器)   1、Mapper代理對象   2、Service對象 二、Springmvc(前端控制器)(子容器) Controller對象

轉帖:maven(二) maven項目構建ssh工程(工程模塊的拆分聚合)

圖片 做的 bsp IT 是個 pan 有一種 junit img 出處:http://www.cnblogs.com/whgk/p/7121336.html 前一節我們明白了maven是個什麽玩意,這一節就來講講他的一個重要的應用場景,也就是通過maven將一個ssh

彙編函式c函式互相呼叫問題

彙編函式與c函式的互相呼叫問題 從函式定義的角度來看,彙編函式與c函式都是執行流的基本單位,兩者沒有太大的區別。從操作物件來看,彙編函式中的指令都是直接操作暫存器完成的,c函式中的語句是通過操作變數(可能在暫存器中,大部分時間中都在記憶體中例如ram、cache)。 從c函式調用

小結下:Maltba中的匿名函式函式函式函式以及feval函式

 1:匿名函式 引數 函式體 %匿名函式 [email protected](x)sin(x); y1=myfun1(0); y2=myfun1(0:0.01:2*pi); plot(y2) 變數空間結果為: 2:子函式  見註釋 functi

JAVA的多型----類轉換問題

JAVA語言中, 物件變數是多型的 每個子類物件都算是父類物件(子類物件可以當作父類變數所引用) 那反過來可不可以呢? 答案是取決於父類變數引用的是誰 如果父類變數引用的是子類物件的例項, 可以通過強轉被子類變數引用 如果父類變數引用的是父類物件的例項,則不能被為子類變數引用

Java中類的轉換問題

自己在自學安卓,學的過程中遇到了不少困難,從中意識到自己的java知識不夠紮實而導致,為此分享一下自己的java知識,一來是鞏固知識,二來是給一些也在學java的同學共享共享! 首先先看個例子: class A { public A() { } } class B exte

總結:視窗建立及視窗視窗之間通訊

1、Javascript彈出子視窗 可以通過多種方式實現,下面介紹幾種方法 (1) 通過window物件的open()方法,open()方法將會產生一個新的window視窗物件 其用法為: window.open(URL,windowName,parameters); UR

深入淺出maven系列(三)---maven構建ssh工程(工程與子模組的拆分耦合) 前一節我們初識了maven並且掌握了maven的常規使用,這一節就來講講它的一個重要的場景,也就是通過maven將一個ssh專案分隔為不同的幾個部門獨立開發,很重要,加油!!!

        前一節我們初識了maven並且掌握了maven的常規使用,這一節就來講講它的一個重要的場景,也就是通過maven將一個ssh專案分隔為不同的幾個部門獨立開發,很重要,加油!!! 一、maven父工

iframe頁面頁面的互動

<iframe id="child" name="child" src="child.html"></iframe> 1.父頁面獲取子頁面的window物件 var childiframeWin = document.getElementById("child")

SQL字元函式數值函式

字元函式 1、轉換大小寫 UPPER(列|字串):將字串的內容全部大寫 LOWER(列字串):將字串的內容全部小寫 SELECT UPPER(‘zhixu’),LOWER(‘ZHIXU’) FROM dual ; SELECT LOWER(ENAME) FROM EMP ; 一列資訊變為小寫

Vue學習之路(六)---元件元件之間的資料傳遞

前面我講了基本元件的寫法,現在一起學下父元件怎樣傳遞資料到子元件,以及子元件傳遞資料到父元件的 1.父元件傳遞資料到子元件 1.1 通過props傳遞 父元件App.vue中 <component-a big-num=98></component-a&g

CSS中divdiv——div有內容,div高度卻為0

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!