1樓:帳號已登出
這個問題其實我也糾結過很久,後面看了很多人的理解和書上說的,下面是自己的理解哦,樓主可以參考下!如說得不好,還請提出來,自己好改正!
陣列做引數,傳遞的陣列的首址,從根本上來說已經不再是一個陣列,而是一個陣列副本的變數,這就好比我們經常寫的一個swap函式一樣,要交換兩個數,直接為swap(a,b)是不行的,必須為swap(*a,*b)。這裡的道理跟陣列形參是一樣過的,給樓主看一個例子
#include
void test2(char ss)
int main()
-----------------------------------------
output:
address of s in main:0x22ff30
address of ss:0x22ff30
address of &ss:0x22ff00
address of ss after operator = :0x40302a
-----------------------------------------
其中就可以清楚地看出來,陣列引數的傳遞關係!
指標這塊本來就是c中困難的,希望樓主好運!
2樓:匿名使用者
#include
void length(int a)
int main()
;length(a);
return 0;
}列印出來是1 2 4
a首地址傳入進來,編譯器將它轉化為指標了。
3樓:左自強
陣列做引數,傳遞的是陣列的首地址
4樓:匿名使用者
去這裡看下,應該 對你有幫助。
C中關於引數按引用傳遞的問題,C 中的out引數呼叫方法的時候需要傳遞對應的值嗎?
你的 這個方法 swap textbox t1,textbox t2 是交換好 變數後 又重新給文字框進行了賦值操作,當然文字框的值我們看到了改變!再看你的這個方法 swap textbox t1,textbox t2 同時2個變數,通過除錯,發現 textbox t3 new textbox t3...
c語言中指標做函式引數傳遞二維陣列
include void fun int p1 3 int p2 3 int main int p1 3 3 int p2 3 3 int i 0,j 0 fun p1,p2 for i 0 i 3 i for j 0 j 3 j printf d p2 i j printf n return 0 ...
C語言「檔案包含處理」中的引數傳遞問題
雖然在標頭檔案中和正常的程式檔案中的 沒有本質區別,但是強烈不建議你把實現 放在標頭檔案中,標頭檔案中一般只適合放需要對外界透露介面的函式宣告,公有預編譯定義 define 結構體以及類的宣告 非實現 公共型別 typedef 公共列舉 enum 這麼做的原因就是防止樓主所說的問題發生。在.c檔案中...