關於在c語言宣告帶有變長陣列引數的函式

2022-02-15 11:28:43 字數 1584 閱讀 5147

1樓:風若遠去何人留

在c語言中,函式中要用陣列做引數,可以採用三種方式,其中後兩種均可適用於變長陣列引數。

1 直接以定長陣列做引數,宣告形式為:

ret_type func(int a[100]);

這裡就是以100個元素的陣列做引數的。

2 宣告時不帶長度,即:

ret_type func(int a);

3 以指標替代陣列,即:

ret_type func(int *a);

2,3兩種均可以用於變長陣列。不過這種情況下,需要與函式約定陣列長度的確定方法,比如約定規模 ,約定結束值,增加額外引數傳長度,在陣列元素中包含長度,或採用全域性變數傳長度等等。

2樓:匿名使用者

#include

int sum2d(int rows, int cols, int ar[3]) //陣列作為形參,傳遞的是地址,即陣列名,

//對於二維陣列,通常列數必須是常數,行數為空//但一般陣列地址的傳遞使用指標

void main()

;x=sum2d(2,3,a);

printf("%d\n",x);}

3樓:匿名使用者

int ar[rows][cols]: 二維陣列作引數時,你這裡的rows和cols一定要是常數!

expected constant expression ====> understand?

4樓:方鴻暉

二維陣列做函式引數時,形參的語法形式是:型別說明符 形參名[ ][常量表示式m]

形引數組可以省略一維的長度。

由於實參代表了陣列名,是"地址傳遞",二維陣列在記憶體中是按行儲存的。在形參中,就必須指明列的個數,才能保證實引數組與形引數組中的資料一一對應,所以,形引數組中第二維的長度是不能省略的。

呼叫函式時,與形引數組相對應的實引數組必須也是一個二維陣列,而且它的第二維的長度與形引數組的第二維的長度必須相等。

函式sum2d(int rows, int cols, int ar[rows][cols]) 的第三個引數陣列ar的第二維必須給一個常數。

5樓:匿名使用者

確認兩個問題:

1.你建的工程是不是對的?

2.你的和這個呼叫函式,是在哪呼叫的,呼叫的時候,傳入的引數是什麼?

這些錯誤主要是一些引數不對,或者定義的陣列不完全所致的!

6樓:

int sum2d(int rows, int cols, istring ar[rows][cols]); 試一下

c語言中,如何定義一個以陣列為引數的函式,函式的功能是將陣列中的每一個元素從小到大排列

7樓:

#include

void sort(int *begin,int *end)}}}int main()

;int *p1=a;

int *p2=&a[7];

sort(p1,p2);

for(t=0;t<8;t++)

return 0;}

C語言實引數組與形引數組問題,關於c語言中陣列作為函式引數的函式之間呼叫問題

這個問題是這樣的了,因為你的陣列定義的是二維大小是20 20 地址空間已經分配好了,而但你輸入的m和n的值小於20的時候,你只是先給第一維賦值,如果輸入的數字大於20,在對第二維賦值,但你輸入一些小的m和n時,其實二維陣列你還沒有賦值,他們的值還是你預設給的0啊,而當你用二維陣列去讀數的時候 a 0...

c語言中關於指向陣列的指標C語言中關於指向陣列的指標

char str 100 char pi str 相當於char pi pi str char ppi pi 這個地方抄錯了。應為char ppi pi 定義加 表明這是指標型別的變數 用的時候,就是用的指標,加 幹什麼。只有取指標所指變數的值,或給指標所指的變數賦值的等涉及指標所指的變數的時候,才...

在c語言裡面宣告指標並用malloc賦值與與直接宣告變

區別當然是有的 link n 申明結構體實體 n 結構體地址 link n 申明結構體指標 n malloc sizeof link 讓結構體指標指向申請的記憶體空間,需要free釋放 後者需要釋放並且申請大小靈活 希望對你有幫助 首先你得明白malloc函式的作用 malloc函式是在記憶體中找到...