1. 程式人生 > >程式設計基礎-------C語言函式返回二維陣列的做法

程式設計基礎-------C語言函式返回二維陣列的做法

在C語言中,有時我們需要函式的返回值為一個二維陣列。這樣外部函式接收到這個返回值之後,可以把接收到的二維陣列當成矩陣操作(外部函式不可用普通的一級指標接收返回值,這樣的話,外部函式將不知道它具有二維性)。方法如下:

法1.沒有使用typedef型別定義

  1. #include <stdio.h>
  2. int (*fun(int b[][2]))[2]  
  3. {  
  4.     return b;  
  5. }  
  6. int main()  
  7. {  
  8.     int i,j;  
  9.     int a[2][2]={1,2,5,6};  
  10.     int (*c)[2];  
  11.     c = fun(a);  
  12.     for(i=0;i<2;i++)  
  13.         for(j=0;j<2;j++)  
  14.             printf("%d ",c[i][j]);  
  15.         return 0;  
  16. }  
法2.使用typedef型別定義
  1. #include <stdio.h>
  2. typedefint (*R)[2];  
  3. R fun(int b[][2])  
  4. {  
  5.     return b;  
  6. }  
  7. int main()  
  8. {  
  9.     int i,j;  
  10.     int a[2][2] = {1,2,5,6};  
  11.     R c;  
  12.     c = fun(a);   
  13.     for(i=0;i<2;i++)  
  14.         for(j=0;j<2;j++)  
  15.             printf("%d ",c[i][j]);  
  16.     return 0;  
  17. }  
使用typedef型別定義可以增加程式的可讀性
這兩種方法本質上是一樣的

相關推薦

程式設計基礎-------C語言函式返回陣列做法

在C語言中,有時我們需要函式的返回值為一個二維陣列。這樣外部函式接收到這個返回值之後,可以把接收到的二維陣列當成矩陣操作(外部函式不可用普通的一級指標接收返回值,這樣的話,外部函式將不知道它具有二維性)。方法如下: 法1.沒有使用typedef型別定義 #inc

C語言 函式返回一位陣列陣列

方法一: 萬能的結構體:構造陣列的結構體,將函式型別定義為此型別 但是考試的時候應該不太方便寫結構體,寫不下也會很麻煩,故介紹方法二 方法二: 指標傳遞: 1、返回一維陣列 例子:將陣列每一位加一: #include<stdio.h> #define N 10 int

C/C++函式返回陣列指標問題

方法1:需要對指標有較好的理解int(*f())[2]{int (*m)[2]=new int[2][2];m[0][0]=1;m[0][1]=0;m[1][0]=2;m[1][1]=0;return m;}//總感覺這種函式定義很怪,可以使用typedef重定義下型別,如

C語言基礎】1-5 C語言迴圈與陣列

C語言迴圈與二維陣列 知識點 break與continue break:break語句在switch-case語句中是跳出。break語句在迴圈中還有另一種用法。當迴圈中遇到break語句時,立即結束迴圈,跳到迴圈體外,執行迴圈結構後面的語句 conti

c語言 將一個陣列行和列的元素互換,存到另一個陣列

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C語言筆記--利用陣列輸出楊輝三角形

楊輝三角形又稱帕斯卡三角形,其餘的話就不多說,先看下面的三角形:                                 &nb

程式設計基礎》實驗題目1 陣列 氣泡排序

題目:編寫函式,對於給定的二維整型陣列,首先對每行從小到大排序,之後對每列從小到大排序;反覆執 行上述排序過程,直到沒有變動為止。注:作為實參的二維整型陣列,每行元素個數不低於 3 且每列 元素個數不低於 4。 演算法分析: 1.      為方便傳遞引數

一種C語言建立超大陣列的辦法

最近需要寫一套JNI來紀錄整個螢幕的畫素資訊(9屏截圖),於是想建立一個二維陣列方便快捷地進行儲存,結果炸開了: 基本可以百分百肯定是棧空間不足,但我又不想增加棧空間,那怎麼辦呢?其實還是有辦法的。 首先二維陣列是什麼呢?其實就是兩部分組成,一個一維指標陣列,然後數組裡面的每個指標指向

C語言分配動態陣列(結構體實現)

#include<stdio.h> #include<stdlib.h> typedef struct { double **mat; int m; int n; }Matrix; void InitialMatrix(Matrix *T,in

c語言 建立動態陣列 讀取txt檔案到陣列

int**P;  P = (int**)malloc(sizeof(int)*M);  for (int i = 0; i < M; i++){   P[i] = (int*)malloc(si

c++語言 如何計算陣列行數和列數

對於一個二維陣列如: int a[2][5]; 求陣列元素的總數: sizeof(a) / sizeof(int) 而陣列行數則為 :( sizeof(a) / sizeof(int) )/ ( sizeof(a[0]) / sizeof(int) ) 求陣列列數: siz

如何讓C語言函式返回一個陣列

為了讓C語言函式返回一個二維陣列,有些人這樣定義函式: int **foo(int rows, int columns) 然後在函式中費勁心機拼出來一個這樣的malloc語句: int (*result)[columns] = (int (*)[c

C程式設計--指標(用 “ 函式 ” 對 “ 多陣列 ” 進行操作)

用指向陣列的指標做函式的引數 問題描述 有一個班,3個學生,各4門課,計算總平均分以及第n個學生的成績。 程式碼實現 #include<stdio.h> void average(float *p,int n);//

C語言函式返回值的實現方法和誤區

例項:你們認為這三個函式能正常返回嗎?  int func1(int a , int b) { int c = 0; c = a + b; return c; } char * func2() { char *strTmp = "abs"; return str

C語言 字符數組(多個字符串)探討 求解

字符數 沒有 一個 spa style 字符串類 hello world c語言 字符 什麽是二維字符數組? 二維字符數組中為什麽定義字符串是一行一個? “hello world”在C語言中代表什麽? C語言沒有字符串類型? C語言 字符二維數組(多個字符串)探討 求解

[C語言]給一個字元陣列賦值的問題

我一開始是想寫一個下五子棋的程式,打算用一個字元二維陣列構造棋盤: #include <stdio.h> char a[10][10]; void p(char a[10][10]); int main(void) { int i, j; for (i =

誤人子弟篇之C語言函式返回值與引數傳遞

寫在開頭以免看到結尾你,此篇部落格純屬瞎扯,看看就可以了,不要當真哦! 如果搞過彙編,寫過子程式,那麼你就不用看了,因為看到最後你會發現,在彙編中你有很多方法去返回值,傳遞引數,而在高階語言中,編譯器只是選擇了其中的一種而已,而這篇部落格也寫的毫無邏輯,簡直喪盡天良,草菅人

40題計算機程式設計基礎(C語言)程式設計習題

注意:部分程式碼雙引號中英文有問題,自己調整!1.輸入2個整數,求兩數的平方和並輸出。#include <stdio.h>   main(){ int  a,b,s;   printf("please input a,b:\n"); scanf("%d%d",&a

函式使用二級指標返回陣列的值

使用二級指標返回二維陣列的值 一直以來都不會將函式的結果以陣列的形式返回,今天終於碰巧解決了! 函式功能:功能十分簡單,實現兩個二維陣列的減法,並將結果以陣列的形式返回。 void ** SubA

程式設計基礎(C語言)課程主頁-2016級

  時間很快,2016級的小鮮肉們已經在猜測老賀長什麼樣子了。   從線上作業到翻轉課堂,幾屆的學生跟著我受了不少苦。話雖這麼說,並不代表2016級的就要輕鬆了(老賀虛偽到底!)。不過,苦孩子們,享受吧。   話說回來,老賀在這一屆身上也不會太輕鬆。翻轉課堂