1樓:
寫在函式定義裡的引數叫形參。
寫在函式呼叫裡的引數叫實參。實參能把實參當時的數值傳到函式計算定義塊裡。但不一定能把函式塊裡的資料加工結果帶回來。
函式運算結果要帶**用函式的地方,有幾種辦法:
(1)全域性量。
(2)函式返回值。
(3)通過實參帶回。
想用實參帶回,c語言規定,凡要通過實參帶回的量,它對應的形參必須宣告為指標。不然,不能帶回。
例如,交換兩個數,要帶回交換結果:
函式定義:void jiaohuan(int *a, int *b)
函式呼叫:int x=3,y=4;
int z[2]=;
(void) jiaohuan(&x, &y);
這種呼叫改變了實參的值。
指標函式是第2種方式。它是說,函式送返指標型的結果。函式運算結果並送返的是指標。
例如系統庫函式 strcat 就是。
char * strcat( char * destination, const char * source );
呼叫:printf("%s",strcat("abcd","xyz"))
打出 abcdxyz
這是單向傳遞 --從函式傳出來。
2樓:匿名使用者
先說形參,實參吧!我舉簡單的例子吧比如定義一個函式。
int fabc(int a,int b)呼叫它就是ad=fabc(1,2)
它能接受兩個數值,a,b就是負責複製資料一樣,把呼叫時的1,2代到函式中,a,b就是這就是形參,它沒實際意義,只是個代替而已,呼叫時的1,2就是實參這是相對的。
指標一句話來說就是儲存記憶體地址的變數。它指向的是儲存在記憶體的地址的值。
要反回多個數就在定議函式的時候用指標,比如上面的函式變為int fabc(int *a,int *b)這樣,呼叫的時候(我這裡的呼叫可能錯了,好像是要a,b也是指標,還是要加兩個地址操作符變成&a,&b了,這個不好意思)用上兩個變數就行fabc(a,b)其中a,b是會改變的。
手機打字累,就這麼多吧。
3樓:笨瓜
實參是在呼叫函式時代的值或變數。
形參是函式原形中定義的變數。
改變值的話用地址傳遞就可以了。
把實參的地址傳遞到形參。再改變就行了。屬於指標知識,記憶體地址的操作。
c語言中「指標」和「指標變數」的區別是什麼??
4樓:信必鑫服務平臺
1、概念不同。
「指標」是概念,「指標變數」是具體實現,指標也是一個變數,所以需要進行定義,而對於指標的定義,與一般變數一樣。
2、 存放地址不同。
一個變數的(記憶體)地址稱為該變數的「指標」,通過指標能找到以它為地址的記憶體單元。而指標變數是用來存放另一個變數的地址的(即指標)。
指標和指標變數的關係。
1、指標就是地址,地址就是指標。
2、地址就是記憶體單元的編號。
3、指標變數就是存放記憶體地址的變數。
4、指標和指標變數是兩個不同的概念,但要注意的是,通常我們敘述時會把指標變數簡稱為指標,實際他們含義並不一樣。
指標的好處:
1、直接訪問硬體。
2、快速傳遞資料(指標表示地址)
3、返回一個以上的值返回一個(陣列或者結構體的指標)
4、表示複雜的資料結構(結構體)
5、方便處理字串。
6、指標有助於理解物件導向。
vc 指標變數賦值問題,指標變數賦值方式
雖然b是正確答案,但是對cd的理解不對。a,p是對地址為p的記憶體賦值,因為p還未賦值,這種行為是危險的b,陣列的首址可理解為一個常量指標 即指向的地址不能改變的針 雖然指標不能被修改,但是其指向的地址的內容是可以改的。c。a是常量,其地址不能被修改 d。錯誤在於對引用a的初始化,應該使用相同型別 ...
指標變數指向的變數的值變了,指標變數會不會變
a還是指向p1,b還是指向p2啊 只不過p1和p2的值互轉了 你說的情況可以這樣寫 int t a a b b t 這樣的話a指向p2,b指向p1,但是p1和p2的值還是原先的值不過不建議這樣寫 a和 b的值互換,也就是p1和p2的值互換,注意是 值 的互換,不是變數名 不會變指標變數中存的是地址,...
typedef結構體指標變數再去定義變數什麼意思
driverextension是一個你自己命名的結構體的名字 看起來是驅動拓展?結構體裡的結構是自己定義的,不過這個結構體貌似是引用了另一個結構體。你說的pdriver extension driverextension就是這樣定義結構體的,沒有問題 typedef是自定義型別,相當於,用pdriv...