c 陣列作為函式引數並結合sizeof使用分析

2021-09-26 08:43:46 字數 933 閱讀 8540

首先函式的傳參方式只有三種 : 按值傳參, 按指標傳參,按引用傳參。

另外介紹一下sizeof 和 strlen的區別

1.sizeof  是運算子, 在編譯時確定大小 。strlen是函式 ,在執行時確定大小。

2.sizeof可以用變數, 型別(如 int, char),函式( 如func() ) 做引數,strlen只能用char*做引數,且必須是以''\0''結尾的,否則就會溢位報錯了。

3.陣列做sizeof的引數不會退化(比如int arr[100]; sizeof(arr) = 100 * sizeof(int) = 400 ),而傳給strlen的函式會退化成char * 指標。

#include #define _sizeof(t) ( (size_t)((t*)0 + 1))  // 變數 

#define array_sizeof(t)   ( (size_t)(&t+1)  - (size_t)(&t)  ) //陣列

int main()

第一種不介紹了。

第二,三種

#include #define _sizeof(t) ( (size_t)((t*)0 + 1))  // 變數

#define array_sizeof(t) ( (size_t)(&t+1) - (size_t)(&t) ) //陣列

void test(short int arr[33]) //指標傳參 指標 無所謂後面的大小 也可以寫成 int *arr

void test1(int (*arr)[100]) //指標傳參 指向型別為int 大小100的陣列 所以必須要匹配100

void test2(short int (&arr)[10]) //引用傳參

int main()

C語言陣列作為函式引數

一 陣列元素作為函式的實參 陣列元素就是變數,與普通變數沒有區別,將陣列元素傳送給形參,實現單向的值傳遞。include float max float x,float y int main int m a 0 for int i 1 i 6 i printf 陣列中的最大元素是 d m 二 陣列名...

陣列作為函式引數

一 一維陣列名作函式引數 用陣列名作函式引數,應該在主調函式和被調函式分別定義陣列,例如 void main 在被呼叫函式中宣告了形引數組的大小為10,但在實際中,指定其大小是不起任何作用的,因為c語言編譯對形引數組大小不做檢查,只將實參陣列的首元素位址傳給形引數組。形引數組可以不指定大小,在定義陣...

陣列作為函式引數

陣列元素的作用與變數相當,一般來說,凡是變數可以出現的地方,都可以用陣列元素代替。陣列名也可以做實參和形參,傳遞的是陣列第乙個元素的位址。陣列元素可以用作函式實參,但是不能用作形參,因為形參是在函式被呼叫時臨時分配儲存單元的,不可能為乙個陣列元素單獨分配儲存單元 陣列是乙個整體,在記憶體中佔連續的一...