我覺得你在看引用調用和值調用那一部分。
專注于為中小企業提供做網站、成都做網站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業陜西免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了數千家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
首先,其實對于int
a[10],就是在內存中開辟一段存儲空間存放十個整型元素。你要明白a不是一個變量,而是一個常量地址,什么地址呢?就是指向這10個元素空間的首地址(第一個元素的地址)。你可以給a賦個值試一試,編譯不會通過,因為a是個常量,不是變量。
而對于變量,他就是代表一個值,可以對他進行任意賦值。
如果將數組傳遞給函數,因為數組名a是常量地址,所以函數形參有了主函數數組的地址,所以被調函數可以通過地址,修改主函數中數組的元素值。
明白嗎?
函數不可以定義為數組,可以用函數指針來操作。
1.函數指針的數組定義方法:返回值類型( * 指針變量名[Number]) (形參列表)。
例如:
double add(double a,double b){}
double sub(double a,double b){}
double mul(double a,double b){}
double div1(double a,double b){}
double (*oper_func[])(double, double) = {add,sub,mul,div1};//函數指針的數組定義。
2.函數指針是指向函數的指針變量。 因而“函數指針”本身首先應是指針變量,只不過該指針變量指向函數。這正如用指針變量可指向整型變量、字符型、數組一樣,這里是指向函數。
C在編譯時,每一個函數都有一個入口地址,該入口地址就是函數指針所指向的地址。有了指向函數的指針變量后,可用該指針變量調用函數。
擴展資料:
指針函數和函數指針的區別:
這兩個概念都是簡稱,指針函數是指返回值是指針的函數,即本質是一個函數。我們知道函數都有返回類型(如果不返回值,則為無值型),只不過指針函數返回類型是某一類型的指針。其定義格式如下所示:返回類型標識符*函數名稱。
返回類型可以是任何基本類型和復合類型。返回指針的函數的用途十分廣泛。事實上,每一個函數,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當于一個指針。比如函數返回一個整型值,實際上也相當于返回一個指針變量的值,不過這時的變量是函數本身而已,而整個函數相當于一個“變量”。
參考資料:百度百科 -?函數指針
方法
有2
將該數組定義為全局變量,即:
int
g_arr;
void
fun()
{...}
void
main()
{...}
2.將該數組作為函數參數傳遞到自定義函數里,即:
void
fun(int
arr[])
{...}
void
main()
{
int
arr[10];
fun(arr);
}
將數組傳遞給函數后,數組就會退化為指針
void?fun(int?x,?int?pp[],?int?*n)
void?fun(int?x,?int?*pp,?int?*n)
//?這兩種寫法是等價的
pp[j++]=j;?//?這句寫錯了
//?要保存到pp里的是能整除的整數,而不是計數器j,如果這么寫,那么pp的值肯定是{0,1,2,3,4,5,...}
//?應該改成
pp[j++]?=?l;?//?L才是被整除的整數,要保存的是這個
*n=j;?//?n作為一個指針,負責傳出得到的數字的數量,j是計數器,當所有的計算完畢后,j的值自然是這些數字的數量
當前題目:c語言函數變量數組,c語言可變數組的實現
URL地址:http://m.kartarina.com/article22/heicjc.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、App設計、微信小程序、虛擬主機、響應式網站、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯