c語言問題 主函式中有二維陣列,呼叫子函式對其賦值

時間 2021-08-30 10:29:00

1樓:匿名使用者

#include

#define row 3

#define col 3

void initary(int (*ptr)[col]);

void printary(int (*ptr)[col]);

void main()

void initary(int (*ptr)[col])}}void printary(int (*ptr)[col])printf("\n");}}

lz最好把功能都封裝到函式裡面,這樣就會很清晰的了

2樓:陳冠鋼

#include "stdio.h"

void fun(int (*p)[3]) }}

void main()

3樓:孤鬆獨海

int a[20][20];

int *p=a;

*p++= 這樣子賦值

4樓:匿名使用者

#include

void read(int (*a)[5],int rows) //rows是二維陣列的行數}}

int main(void)

putchar('\n');

}return 0;

5樓:匿名使用者

#include

#define m 2

#define n 3

void input(int *a,int num)}void output(int *a,int m,int n)printf("\n");}}

void main()

6樓:匿名使用者

void get_val(int array[200], int m, int n, int *max, int *min)

if(*min >

printf("max:%d,min:%d\n",max,min);

}編譯通過並通過測試,另外還可以通過指標傳遞:

void get_val(int *array, int m, int n, int *max, int *min)

if(*min > *(array+j*n+i))}}}另外,虛機團上產品**,超級便宜

c語言函式中怎麼返回一個二維陣列

7樓:浪小客

1、我們首先定義一個二級指標和一個行列變數[int ** array,row,column;]。

2、然後我們編寫進入行和列的語句,**如圖所示。

3、接下來我們可以用一維陣列開啟一維一維陣列。

4、接下來,我們使用[array [i] =(int *)malloc(sizeof(int)* column);]來為陣列再次生成包含該陣列的新陣列。

5、然後我們可以為它賦值並輸出[**如圖所示]。

6、執行程式後我們可以看到這種效果。

8樓:

需要動態申請的啊,堆疊上面的陣列是不能直接返回的會在函式退出的時候銷燬掉

#include

int **returnnum()

}return a;//error: cannot convert `int (*)[5]' to `int**' in return

} int main()

printf("\n");

free(cpy[i]);

}free(cpy);

return 0;}

9樓:手機使用者

#include int *_print(int (*_pointer)[2],int n);void main(void),}; int *p,row; printf("請輸入行號實參是二維陣列名 printf("%d\n",*(p+1)); // 輸出row行1列的元素}/* 定義指標函式_print 形參是指向由2個元素組成的一維陣列的指標 函式返回值是 地址*/int *_print(int (*_pointer)[2],int n)

希望對你能有所幫助。

10樓:匿名使用者

c語言中函式不能直接返回一個二維陣列。但是可以通過其他方法實現類似功能:

1、把二維陣列定義為全域性變數 這樣可以直接在另一個函式中呼叫2、把二維陣列作為指標傳入到第一個函式中 然後同樣作為指標傳到另一個函式中

3、動態分配記憶體 在賦值函式中動態分配 並用返回值返回,在另一個函式中進行訪問

11樓:使用氟

c語言無法返回空間,只能返回指標。

函式內動態申請,返回指標,缺點是容易出現野指標,根據誰申請誰釋放原則。

設定全域性引數,缺點全域性資料稍微多了一些,而且破壞封裝思想。

c語言中,主函式中已經賦值的陣列怎麼呼叫到子函式

12樓:我努力的方式

一般bai

是需要主函式

du提供儲存數

據的陣列,在參zhi數中給出陣列dao起始地址,專然後子函式在其中填充,屬比如要準會的整數是56 void fun(int *a,int b) void main()

c語言如何在子函式中對主函式中的二維陣列值進行修改? 二維陣列已經在主函式中用動態陣列分配了空間。

13樓:古今創造

用指標做函式引數可以實現!

14樓:匿名使用者

用陣列時,必須要知道二維陣列的後一個維度,否則無法正確修改,比如:

void modify(int a[10])void main()

用指標方式實現時要注意二維陣列的建立過程。比如以上的int a[5][10],用指標實現相同功能的**如下:

void modify(int **a)void main()

c語言如何在子函式中改變主函式陣列值?

15樓:匿名使用者

兩種方法bai.

一:把a作為引數

du傳遞給zhisss();

int sss(int x)

這樣僅僅只是使用daoa的值,是把a的值複製給x,使x的值等於內a,可以在子函式容中使用a的數值,但無法改變主函式中a的值.

二,使用指標.宣告一個指標指向a,把a的地址作為引數傳遞給子函式,那麼在子函式中不但可以使用a的值還可以修改主函式中a的值.

16樓:千年老妖

變數有全域性變數和區域性變數之分,要想子函式改變母函式的變數值有回兩種辦法:答

1是將變數定義成全域性變數(在#include下面就定義),然後在子函式中直接使用變數名。

2是將指向該變數的指標當作引數傳遞給子函式。

17樓:匿名使用者

你的程式恐怕連編譯都不能通過吧,有語法錯誤。

18樓:心聲代

你那個h好像始終是0吧

c語言用函式實現陣列賦值

19樓:嵇娥朱曉楓

你這樣屬於溢位,因為後面的幾個元素不在為陣列分配記憶體區域內,因此可以被其它資料任意佔用,值也就可能會改變。這種操作應該避免,對於陣列賦值,應該進行嚴格的邊界檢查

20樓:榮孟譙良弼

void

chg_array(int

array,

intsize,

intvalue)

chg_array(m_a,

31,9)

//將陣列

m_a的31個元素賦值為9.

一維陣列不需要二維指標。

21樓:徐志偉

程式語言:

void chg_array(int array, int size, int value)

chg_array(m_a, 31, 9) //將陣列 m_a 的31個元素賦值為9. 一維陣列不需要二維指標。

22樓:仁昀昀

如果你非要用指標的話,可以把陣列的形式改寫成指標的形式,就像一樓的

void chg_array(int array, int size, int value)

23樓:匿名使用者

直接賦值就行啊,有什麼問題

c語言二維陣列問題

寫完以後我發現有點長,樓主給點耐心看,不懂我們再交流 a是整個二維陣列的首地址,short長度為2,sizeof a 2 5 5 50 a 1指向二維陣列的第二個元素,它僅僅是一個指標,如果在a 1前面加一個 號,就是第二個元素的值,即a 0 1 所以,a 1是一個指標,它指向二維陣列中的某個數,指...

C語言的問題關於二維陣列的

從二維陣列的角度來看,a是二維陣列名,a代表整個二維陣列的首地址,也是二維陣列0行的首地址a 1代表第一行的首地址。int a 3 4 設陣列a的首地址為1000。a 0 是第一個一維陣列的陣列名和首地址,因此也為1000。a 0 或 a是與a 0 等效的,它表示一維陣列a 0 0 號元素的首地址,...

C語言問題。定義二維陣列,C語言問題。定義一個二維陣列

ok洛陽水席 include int main sum 0 for i 0 i 5 i return 0 樓主基本沒有大錯誤,只是不夠仔細,用來儲存特定值的變數使用前一定要初始化,如本例中的最大值,最小值,下標,都是必須初始化的!整型與整型運算會得到整型,1 2 0,5 4 1 系統會捨去小數部分。...