c 類函式中怎麼返回和使用二維陣列

2021-12-19 14:49:14 字數 3341 閱讀 1202

1樓:仙戈雅

#include

using namespace std;

class foo

;foo::foo()

foo::~foo()

// 返回指向二維陣列的指標函式

int ** foo::test2darray(unsigned r, unsigned c)

}return arr2d;

}int main()

cout << endl;

}// 釋放記憶體

for (int i = 0; i < 3; i++)delete arr2d;

delete foo;

return 0;}

2樓:匿名使用者

c++中函式不能直接返回二維陣列,但可以返回函式指標

3樓:千鋒教育

不要把二維陣列與二維指標混淆在一起,他們是不同的意義的。

指標是指標變數的簡稱,它可以儲存「資料」的地址。

無論是幾維的陣列,陣列名只不過是一個地址的代號,好比是一個樓的樓號(相當於地址),它不能被改變,可以賦給任何型別的指標變數(因為指標變數中存的是地址,在一個計算機中,地址所佔的空間是一樣的,所以,可以隨意賦值),但根據指標變數的型別的不同,在引用時會有不同的結果表現,用不好就會「死掉」。

儘量不要使用區域性變數的返回引用,這樣不可靠。如你的例子:當a函式結束後,原則上b所處的位置的資料系統就不保證了,如果有別的程式用,你的b空間裡的資料就可能被覆蓋了。

如果非要用,建議這樣:int *a(); return b;}

如果你返回的二維陣列是一個固定大小的,那麼,就在呼叫者程式中,建立陣列,通過引數傳遞過去進行賦值

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

4樓:浪小客

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

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

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

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

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

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

5樓:

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

#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;}

6樓:手機使用者

#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)

希望對你能有所幫助。

7樓:匿名使用者

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

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

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

8樓:使用氟

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

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

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

c++中二維陣列作為引數傳遞到一個函式

9樓:問明

方法1、 第一維的長度可以不指定;但必須指定第二維的長度。

#include

void print_a(int a[5], int n, int m)

int i, j;

for(i = 0; i < n; i++)for(j = 0; j < m; j++)printf("%d ", a[i][j]);

printf("\n");

方法2、指向一個有5個元素一維陣列的指標。

void print_b(int (*a)[5], int n, int m)

int i, j;

for(i = 0; i < n; i++)for(j = 0; j < m; j++)printf("%d ", a[i][j]);

printf("\n");

方法3、利用陣列是順序儲存的特性。

void print_c(int *a, int n, int m)int i, j;

for(i = 0; i < n; i++)for(j = 0; j < m; j++)printf("%d ", *(a + i*m + j));

printf("\n");

int main(void)

int a[5][5] = , , , , };

printf("\n方法1:\n");

print_a(a, 5, 5);

printf("\n方法2:\n");

print_b(a, 5, 5);

printf("\n方法3:\n");

print_c(&a[0][0], 5, 5);

getch();

return 0;

10樓:楊柳風

可以傳遞二維陣列作為引數,有兩種方法,

方法一change(int **a)直接傳遞一個指標進去方法二change(int a[10])陣列的第二維維度一定要顯式指定

假如主函式有一個二維陣列int a[10][18];

寫一個函式要傳遞二維陣列,函式原型應該是這個樣子void f(int (*)a[18]);

或者 void f(int a[18]) 必須確定第二維長度是多少

c語言的函式返回值,c語言中,函式返回值怎麼用?

所謂返回值,就是人們想要知道函式或者程式所得到 的結果而設計的函式或者程式結束時給出一個值。比如 我們編寫一個加法函式,肯定想知道加完過後的結果是什麼,那麼我們就指定這個結果為該加法程式的返回值。關於返回值的返回 1 函式呼叫語句本身代表其返回值 例如 fun a 那麼 fun a 就是這個返回值。...

php類中定義了函式怎麼使用它,php類中定義了一個函式,怎麼使用它?

php類中定義的函式有幾種,例如 class a 受保護的方法 protected function test2 靜態方法 static function st 私有方法 private function test3 內部訪問 public function use 外部呼叫方法 a new a a...

C 成員函式的使用有哪些限制,C 類成員函式什麼情況下必須定義引數?

必須為其指標所指向的物件分配記憶體才可以進行strcpy操作。如果沒有分配記憶體,則 strcpy pname,p 把p複製到 沒有記憶體存放!這可能會導致未知的情況發生,程式會崩潰.以下是修改後的程式。注 用構造分配記憶體 new 必須要用析構 delete 釋放記憶體,否則會造成記憶體洩露 me...