重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
在C語言中,用數組名作為函數調用時的實參,實際上傳遞給形參的是首地址。
站在用戶的角度思考問題,與客戶深入溝通,找到日照網站設計與日照網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都做網站、成都網站制作、企業官網、英文網站、手機端網站、網站推廣、國際域名空間、虛擬主機、企業郵箱。業務覆蓋日照地區。
因為數組名傳遞的是數組的地址也就是第一個元素的地址。例如:
a[3]這個數組,3指個數,a[0]指第一個元素,全部元素指a[0]~a[2];那數組名a規定的就是首地址。
擴展資料
C語言中函數參數傳遞的三種方式:
1、傳值,就是把你的變量的值傳遞給函數的形式參數,實際就是用變量的值來新生成一個形式參數,因而在函數里對形參的改變不會影響到函數外的變量的值。
2、傳地址,就是傳變量的地址賦給函數里形式參數的指針,使指針指向真實的變量的地址,因為對指針所指地址的內容的改變能反映到函數外,也就是能改變函數外的變量的值。
3、傳引用,實際是通過指針來實現的,能達到使用的效果如傳址,可是使用方式如傳值。說幾點建議:如果傳值的話,會生成新的對象,花費時間和空間,而在退出函數的時候,又會銷毀該對象,花費時間和空間。
一維數組的元素作為函數實參,與同類型的簡單變量作為實參一樣,是單向的值傳遞,即數組元素的值傳給形參,從而形參是改變不影響實參
數組名代表著整個數組的地址,如果一維數組的名字作為函數實參,傳遞的是整個數組,即形參數組和實參數組完全相同,是存放在同一存儲空間的同一個數組。這樣形參數組
修改時,實參數組也同時被修改了。形參數組的元素個數可以省略。
#includestdio.h
//數組作為函數參數,可以省略元素個數
//數組作為函數參數,傳遞是整個數組的地址,修改了函數形參數組元素的值,會影響到外面的實參數組
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
輸出結果為: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
這里的 ?if(max(m,a[i])m) ?規范寫法后面那個分號應該去掉的
這個程序求的是輸入的是個int類型數字的最大值,m = a[0]是把第一個數的值賦給變量m,然后拿第二個跟它對比,if(max(m,a[i])m)這句里面的max(m,a[i])是對比m與它的下一個數的大小,max(m,a[i])m則是把調用函數返回的值跟原來的m作比較,如果符合max(m,a[i])m的條件,m = max(m,a[i])就把調用函數返回的值賦給m,n = i ? “i”是當前最大的那個數的在數組中的位置。
只是大于零是不行的,因為這里要求最大的那個數,你輸入的數字肯定全部大于或等于零的,如果改成if(max(m,a[i])0)是一個接著一個作比較,n = i要執行10次,也是可以得到正確答案,但是這會增大系統開銷;如果是if(max(m,a[i])m)這樣,那么最大的數在第幾位,n = i就執行多少次,總的執行次數小于等于10.安效率來算后者較可觀。時間復雜度較低。
例如:你自己定義一個函數
int
max(int
a,int
b){...
}
在這里a,b就是形參,接下來你會調用max函數,如:
void
main()
{
int
c,int
d;
.....
max(c,d);
}
這里c
d就是實參
所謂形參就是在函數定義體中的參數
所謂實參就是在調用函數時實際傳進函數的參數