自學C day11 陣列做函式引數

2021-10-21 10:18:43 字數 933 閱讀 4834

三種寫法均可

void

bubblesort

(int arr[10]

)==void

bubblesort

(int arr)

==void

bubblesort

(int

*arr)

陣列做函式引數時,傳遞的不再是整個陣列,而是陣列的首位址,等價於*arr,大小就是乙個指標的大小,所以求sizeof就會出問題了

在自定義的函式裡面就不能用 n = sizeof(arr) / sizeof(arr[0])求元素個數了

但是在main函式裡面可以

所以,當整型陣列做函式引數時,通常在函式定義中封裝2個引數,乙個表示陣列首位址,乙個表示陣列元素個數

int

bubblesort

(int src,

int n)

;int

main

(void);

int n =

sizeof

(arr)

/sizeof

(arr[0]

);bubblesort

(arr, n)

;for

(size_t i =

0; i <

10; i++

)system

("pause");

return exit_success;

}int

bubblesort

(int src,

int n)}}

return0;

}

int *test_func(int a,int b); //返回值是位址

指標做函式返回值,不能返回區域性變數的位址值

c語言不允許

只能寫成指標形式

自學C day11 指標

int a 10 int p a 初始化必須是用位址給它初始化 使用 p 250 指標的解引用 間接引用 p 將p 變數的內容取出,當成位址看待,找到該位址對應的記憶體空間 如果做左值 存資料到空間中 如果做右值 取出空間中的內容 void 萬能指標 泛型 指標的大小與型別無關,只與當前使用的平台架...

陣列做函式引數

陣列名是陣列元素首位址,可以直接當做實參,可以用指標或方式來當形參接收,都是位址傳遞,形參都是指標方式 include void input int arr void output int arr 這裡得出的大小是4個位元組,證明形參是指標形式 printf n d sizeof arr void ...

陣列名做函式引數

陣列名做函式引數 用陣列名做函式引數與用陣列元素作實參有幾點不同 1 用陣列元素作實參時,只要陣列型別和函式的形參變數的型別一致,那麼作為下標變數的陣列元素的型別也和函式形參變數的型別是一致的。因此,並不要求函式的形參也是下標變數。換句話說,對陣列元素的處理是按普通變數對待的。用陣列名作函式引數時,...