關於C引數的問題。為什麼引數都用指標型別

2022-08-14 01:50:38 字數 2280 閱讀 4973

1樓:

方便資料帶回,如果是直接int的話在函式內部對資料進行修改以後原資料(即呼叫點處的資料)是沒有變化的,函式能提供給呼叫點的只有一個返回值,而有的時候只有一個返回值是不夠的,所以就需要用指標,在函式內部對資料本身直接修改,才函式結束之後直接這個資料就已經是改過的了,比如strcpy,gets之類的,引數都是指標,gets為例,我們把我們想用來儲存使用者輸入的空間放進去,函式才能對這段空間直接操作,函式結束以後這部分資料就已經在記憶體裡了,但是如果不用指標的話,您打算怎麼只用一個返回值就搞定整個輸入呢?以上內容希望對您可以有所幫助。

2樓:匿名使用者

要分情況來看對於你說的

void ss(char* a);

傳遞指標是因為實際要傳遞的引數可能是一個字串, 而不使用指標則只會傳遞字串的第一個(或是指定位置的一個)字元,

對於void ss(int *arg);// 或其他如 float, double, 或是結構休/類等

這種情況, 往往是希望函式的執行可以影響所傳遞引數的值, 所以將引數所在的地址傳遞過去, 在函式中就會直接修改這個地址的值, 也就是在呼叫函式中的變數的值. 或者也是希望傳遞一個整型陣列

3樓:匿名使用者

提高效率....使用int,系統先把你提供的實參複製一份,然後再把這個副本的值賦給形參。

使用指標可以直接操作實參記憶體,可以直接修改它的值,省去了實參複製的時間成本。。。

c++中什麼情況下要用 指標或者引用做引數 有什麼好處呢?

4樓:匿名使用者

值傳遞的話會複製整個物件,適用於一些小的物件傳遞

指標和引用不會複製物件,適用於大型物件的傳遞

不過是使用值傳遞還是指標傳遞或引用傳遞,還要考慮你的實際情況以及使用的便捷性

c++函式指標作為引數的問題

5樓:匿名使用者

考慮是否宣告瞭其他reverse函式,或者意外把其他名稱空間的 reverse 函式(例如 std::reverse )引入當前名稱空間……

c++ 函式指標引數的問題

6樓:

解決方法很多,其實需要看你到底想要封裝什麼:

void transfer( //此函式 結構體內部呼叫也可由外部呼叫。

void(*sdmsg)(u8) , //第一個引數是指標型別

msgtype *msg, //

u8 len);

這個介面的引數為函式指標,是為了更好的擴充套件函式對麼?

如果是為了擴充套件,可以將sendmessage方法變成一個函式,在引數中指定msgrsvbuffer;

另外,如果使用c++,直接將sendmessage定義為介面或者虛擬函式,使用繼承的方法重寫該函式也是可行的,這樣正好對應了模板方法的設計模式。

7樓:海賊

看的不太懂,不知道行不行,你可以嘗試著把void(*sdmsg)(u8)定義成友元函式,這樣裡外都可以用了

不行就算了額,呵呵

c++問題,虛擬型別引數是什麼?

8樓:匿名使用者

什麼叫虛擬型別引數,只聽過虛擬函式...

莫非是類别範本?

關於c++類的指標作為函式的引數問題

9樓:感冒九十九

你應該把源**的檔案形式發上來,最好發宣告,定義就不用了。

可能你遇到的問題是 名字衝突問題

你問題描述的太模糊了

10樓:匿名使用者

你的plane.h加沒加這種**:

#ifndef plan_h

#define plan_h

...#endif

另外定義class別忘了寫最後的分號

class plane ;

11樓:匿名使用者

在定義函式todestory的檔案中包含類plane的標頭檔案。

12樓:吃瓜群眾蔣先生丶

plane類定義之後,是不是沒有例項化?函式引數需傳入一個已經存在的物件

13樓:匿名使用者

加一個#include語句。

那你的plane.h裡有沒有include plane.cpp啊?

關於汽車引數的問題,關於汽車引數的一個問題!!!!

最大功率 kw 110 最大功率轉速 6500 是指最高在6500轉,才會發出最大動力,指的是最高檔,而不是任意檔位 8000轉?根據你引數應該是2.0左右的車轉到8000?你的車不要了?還是要報廢啊,儘量不要要轉速超過紅線太多,6500轉到紅線,你就最遲到7000換擋,這樣還是對機頭很大傷害的,發...

關於c語言中陣列名作為引數傳遞的問題

陣列名作為引數就退化 為指標.所以在你的sizeofmat中,sizeof x 就值就是sizeof一個指標的值.因為指標就是地址,陣列名也是地址.所以你陣列名作為引數的時候,是不會傳遞整個陣列的,而是傳遞了一個地址,就是指標.sizeofmat的引數錯誤 必須是陣列型別 sizof x 才能將其視...

C什麼是引數陣列,C 什麼是函式的引數陣列?

c 語言規範 10.5.1.4 引數陣列 用 params 修飾符宣告的引數是引數陣列。如果形參表包含一個引數陣列,則該引數陣列必須位於該列表的最後而且它必須是一維陣列型別。例如,型別 string 和 string 可用作引數陣列的型別,但是型別 string 不能。不可能將 params 修飾符...