1樓:匿名使用者
1、因為陣列在記憶體來中源
是一塊連續的記憶體,只要將該陣列的首地址傳進去,當然就可以訪問整個陣列了。值得注意的是,由於只傳了首地址,函式不知道陣列的維數,所以還得把陣列的維數傳進去,那就可以完全操作該陣列了。
2、例:有一個函式宣告:void fun( int aa,int size );或者void fun( int *pa,int size );
以上兩種宣告都一樣。
呼叫上訴函式時:假設有 int ab[10];
fun( ab,10 )就可以了。
c語言中,陣列做函式引數如何才能按值傳遞?
2樓:匿名使用者
傳陣列給一
bai個函式,數du組型別自動轉換zhi
為指標型別dao,因而傳的實際是專地址。
void func(int array[10])void func(int array)
void func(int *array)所以以上三種函
屬數宣告完全等同。
實際情況是,陣列做引數,完全無法按值傳遞。這是由c/c++函式的實現機制決定的。
下一個問題是:為什麼偏要按值傳遞呢?當要在一個函式內使用一個陣列時,傳一個指標進去不就行了?只要能訪問到我們所要的資料並對其進行操作,何苦鑽牛角尖。
3樓:一枝梅不落
陣列其實就是指標的退化,陣列名其實就是一個指標。就直接按指標做函式的引數就好,然後將陣列名傳遞進去給函式就行!在函式中對其的訪問也是和陣列的操作類似!具體的可以看一下書!
4樓:匿名使用者
1、陣列做引數,完全無法按值傳遞。這是由c/c++函式的實現機制決定的。回
2、傳陣列答給一個函式,陣列型別自動轉換為指標型別,因而傳的實際是地址。
下面三種函式宣告完全等同:
void func(int array[10])void func(int array)
void func(int *array)
5樓:南坪中學校帥
不可能按值傳遞的,設想一下
type *arr =。。。。。
sizeof(arr)為100萬了位元組,如果按照值傳遞,就要建立版一個臨時變權量temp也為100萬個位元組,效率豈不是太低了。再可能arr是堆記憶體,引數傳遞是要屬性相同,值相同,難道系統自行去new一段記憶體,這該使用者去釋放 還是系統自動**呢?
6樓:林夕之韻
陣列給一個函式,常用的是可把陣列的首地址傳給函式。
即相當於是指標的應用
fun(int array[10])
fun(int array)
fun(int *array)
三種呼叫方法
7樓:匿名使用者
傳陣列給一個函抄數,陣列型別自動轉換為指標型別,因而傳的實際是地址。
void func(int array[10])void func(int array)
void func(int *array)所以以上三種函式宣告完全等同。
實際情況是,陣列做引數,完全無法按值傳遞。這是由c/c++函式的實現機制決定的。
下一個問題是:為什麼偏要按值傳遞呢?當要在一個函式內使用一個陣列時,傳一個指標進去不就行了?只要能訪問到我們所要的資料並對其進行操作,何苦鑽牛角尖。
C語言自定義函式int length(char s ,函式返回字串s的長度
include int length char s int main while 1 return 0 include int length char s int main 效果包你滿意,親 include int length char s int main void while y ch y c...
c語言自定義的函式如何返回陣列,c語言自定義的函式如何返回一個陣列
方法1 利用全域性變數 分析 全域性變數作為c語言的一個知識點,雖然我們都瞭解它的特點,但在實際教學過程中應用得並不是很多。由於全域性變數的作用域是從定義變數開始直到程式結束,而對於編寫有多個返回值的c語言函式,我們可以考慮把要返回的多個值定義成全域性變數。當函式被呼叫時,全域性變數被更改,我們再把...
在c語言中自定義函式的寫法是怎樣的
看你的函式功能是幹什麼,函式開頭用不用int看的是你函式最後要返回什麼值,返回的型別是什麼就用什麼,格式如下 函式返回型別 沒有返回就void,返回整型就int,字元就char等等 函式名 函式引數。例如定義一個加法函式,最後返回整型就 int addfunction int a,int b 自定義...