1樓:千振華希綾
因為在編譯的時候陣列被看成是指標·~所以沒有差別。如。intx[10];
intp=x;
那麼x[1]實際上彎晌就是*(p+1)。
p是變數,能儲存位址,而。
陣列x是位址常量。
都是被看成位址,只不過乙個是變數,乙個是常量。
至於為什麼都能被當成引數。
就好比呼叫函式fun(3);
fun(x)
常量變數都可以。
形參的話寫成x這樣的形式是為了表明指標是指向陣列。//只是為了清晰,實質形參都是指標。
而實參就是指標和數目名都可以~~/即實參埋公升鋒可以是變數常量,形參都是被看成變數笑胡~~
2樓:諶學岺生鸞
在c語言,陣列無論作為引數還是返回值,都是以指標形式返旁櫻回或者傳遞的。在陣列中,陣列名字代表的是陣列第1個元素的位址。比如如下陣列。
inta[10]
陣列名a,實際上相當於&a[0]。所以,當實參是陣列名,形參是指標變數伍尺時,只要保證資料型別一致即可傳遞。如下面的示例運橘叢**:
#include
void f(int *p, int size) ;
f(a,4);
return 0;
為什麼c語言把陣列形參當做指標?
3樓:亞浩科技
解釋:在c語言中,所有族空沒非陣列形式的資料實參都以傳值形式(對實參做乙份拷貝並傳遞給呼叫的函式,函式不能修改作為實參實際變數的值,而只能修改傳遞給它的那份拷貝)呼叫。
然而,拷貝整個陣列都無論是在時間還是儲存空間上開銷都是非常巨大的,在絕大部分時間你並非需要拷貝整個陣列,你只想告訴函式在哪一時刻需要哪個特定陣列,要達到這一目的,可以考慮的方法是在形參上增加乙個儲存說明符(storage specifier)表示它時傳值呼叫還是傳址調虧瞎用。
函式的返回值「絕不能」是函式陣列,而只能是指向陣列或函式的指標。
有些人喜歡理解為:除陣列和函式之外所有c語言引數在預設情況下都是傳值呼叫,陣列和函式都是傳址呼叫。
這種理解有些片面,資料也可以使用傳址呼叫,只要在它前面加上取址操作符(&)這樣傳遞的是實參的兆納位址而不是實參的拷貝。
因為編譯器的機制非常清楚—在被呼叫的函式中,你只擁有乙個指向變數的指標而不是變數本身。
4樓:網友
因為在編譯的時候陣列被看成是指標·~所以沒有差別。
如int x[10];
int *p=x;
那麼x[1]實際上就是*(p+1)。
p是變數,能儲存位址, 而 陣列x是位址常量 //都是被看成位址,只不過乙個是變數,乙個是常量。
至於為什麼都能被當成引數 就好比呼叫函式fun(3); fun(x) 常量變數都可以。
形參的話寫成x這樣的形式是為了表明指標是指向陣列。//只是為了清晰,實質形參都是指標。
而實參就是指標和數目名都可以~~//即實參可以是變數常量,形參都是被看成變數~~
c 陣列名和指標,C 的指標與陣列名有什麼區別?
1.str是陣列,str相當 copy於陣列首地址。bai2.mstr 指向 str,相當於du指向了陣列的第一個zhi地址,dao mstr 就輸出h。3.str只是相當於陣列首地址,但是對陣列名取地址,str 得到的是一個指向整個地址的指標,型別是char 12 所以第一行輸出hello wor...
為什麼感情都可以玩啊?為什麼不要玩玩就走的感情?
這只是在感情關係中占主導地位的一方,因為不珍惜另一方,或者根本就是對方在自作多情,才會出現的一種情感狀態,這樣也是不太道德 不尊重對方的表現。真心作答望,謝謝。因為不是真心的愛,更不是珍惜的情。希望,謝謝。為什麼不要玩玩就走的感情?王祖賢說 我對感情好認真的,如果你只是玩玩,千萬別來找我。現在年輕人...
為什麼家裡土狗吃什麼都可以,為什麼農村土狗什麼都吃 寵物狗就得喂狗糧?
不懂 是不是富貴狗都容易得富貴病啊!還是養土狗好!不是不能像土狗那樣養 是那樣養出來的狗 毛色外形之類的沒那麼好看 不好好養何必買那麼貴的狗呢 土狗你要好好養照樣也是會比一般的土狗好看 看你願不願意那麼養 很多愛貓的人名貓土貓一樣對待 一樣用很貴的貓糧 就是這樣咯 自己看著辦唄 裡面有狗狗所需要的營...