重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
函數傳遞的是數組的首地址,即a[0]的地址,而不是把整個地址都傳過去,因為有首地址,只要往下尋找就能遍歷整個數組了。而指針就可以指向數組首地址~
張家口網站建設公司創新互聯,張家口網站設計制作,有大型網站制作公司豐富經驗。已為張家口上千余家提供企業網站建設服務。企業網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的張家口做網站的公司定做!
C和C++都沒有辦法傳數組,只能傳“指針”,指針和數組的差別就在于函數內無法檢測數組的尺寸
數組作為參數是按地址傳遞的
數組名就是數組的首地址。因此在數組名作函數參數時所進行的傳送只是地址的傳送, 也就是說把實參數組的首地址賦予形參數組名。形參數組名取得該首地址之后,也就等于有了實在的數組。實際上是形參數組和實參數組為同一數組,共同擁有一段內存空間。
一維數組的元素作為函數實參,與同類型的簡單變量作為實參一樣,是單向的值傳遞,即數組元素的值傳給形參,從而形參是改變不影響實參
數組名代表著整個數組的地址,如果一維數組的名字作為函數實參,傳遞的是整個數組,即形參數組和實參數組完全相同,是存放在同一存儲空間的同一個數組。這樣形參數組
修改時,實參數組也同時被修改了。形參數組的元素個數可以省略。
#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