關於陣列(指標)作為引數

2021-06-18 00:39:40 字數 600 閱讀 3143

過去,我一直以為,陣列作為函式引數,就相當於將整個陣列參與了函式運算, 後來再看c prime 後,才知道錯了。

作為引數,陣列名和指標是一樣的,你別想知道傳進來的陣列有多麼大,因為傳進來的,只是乙個位址,我不能用sizeof去判斷這個陣列的長度,因為無從判斷,從而也不能通過for迴圈來判斷結尾,我只能從首位址開始,一直往後面判斷,直到陣列結束。

我可以定義陣列的長度,但這樣的函式就只能正確的處理這樣長度的陣列,這顯然不是我們想要的。

我還可以將原來的陣列長度作為引數,傳進來,如:

void  fun(char a,int len);

這裡,可以將a 換成*a,因為在作為引數的情況下,他們是一樣的。

在作函式宣告時,可以採用下列四種方式:

1.    void fun(char a,int len);

2.   void fun(char ,int );

3.   void fun(char *a,int len);

4.   void fun(char *,int);

但是作函式定義時,不能省掉引數。

值得一提的,在main()函式中,字串最好用陣列形式給出,但我不清楚緣由,只是因為他不經常出錯吧。

指標作為引數

值傳遞,指標傳遞?這幾天在學習c過程中,在使用指標作為函式引數傳遞的時候出現了問題,根本不知道從何得解 源 如下 createnode binnode tree,char p 該 段的意圖是通過乙個函式建立乙個二叉樹的節點,然而在,呼叫該函式後,試圖訪問該節點結構體的成員時候,卻發生了記憶體訪問錯誤...

指標作為函式引數

當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的 刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。void delete node head,int item 這段 的問題是,第乙個引數是指標型別而head null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...

指標作為函式引數

臨近畢業,還有找工作的事情,繁忙之際還是堅持看一下c語言的知識,重點的地方或者不清楚的地方還是要記錄一下。本章以指標作為函式傳參來說一下學習心得,大部分內容源自c語言程式設計課本。首先從c語言中函式引數的傳遞方向說起,大家都知道,c語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式...