當前位置:首頁 » 編程語言 » c語言函數調用數組

c語言函數調用數組

發布時間: 2022-05-22 19:36:39

c語言,如何在子函數中寫一個3*3二維數組,給主函數調用!!

在子函數申請二維數組,主函數使用,可以用動態申請。

方法不止一種,我這里用指針的指針實現二維數組。

二維數組除了行列,本身地址也是連續的,從第一行第一列的元素地址++,可以取出所有元素。所以我這里先申請了完整的連續地址。

#include<stdio.h>
#include<malloc.h>
int**sr(void)
{
inti,j;
int*memory=(int*)malloc(sizeof(int)*9);//申請完整的連續內存地址3*3
int**arr=(int**)malloc(sizeof(int*)*3);//申請二維數組行指針數組(也就是二維數組)
if(!memory||!arr){
printf("內存申請錯誤! ");returnNULL;}
for(i=0,j=0;i<9;i+=3)//將連續地址按列數,取出每行首地址,賦值給二維數組元素
arr[j++]=&memory[i];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&arr[i][j]);
returnarr;
}
intmain(void)
{
inti,j,**arr=sr();
if(!arr)
return1;
printf("---主函數調用子函數定義的二維數組--- ");
for(i=0;i<3;i++,printf(" "))
for(j=0;j<3;j++)
printf("%d",arr[i][j]);
printf(" ---實現二維數組地址連續性--- ");
int*p=&arr[0][0];
while(p<=&arr[2][2])
printf("%d",*p++);
return0;
}

② 在C語言中怎麼將子函數中的數組和函數調用出來

來傳送子函數中的數組有多種方法——可以通過函數返回值返回地址傳遞數組;也可以通過函數輸入參數來傳遞數組;還可以通過全局變數來傳遞數組。

子函數本身可以直接在作用域中進行調用。

1、通過函數返回值返回地址傳遞數組。

聲明函數時需要聲明函數返回值類型為對應數組的地址,此時可以返回數組的地址,結合數組元素的地址關系可以傳遞整個數組,同時可以根據數組的特性傳遞多個參數。

注意:子函數是C語言模塊化編程思想的核心,其方法是通過輸入介面和輸出介面實現對黑盒的調用,故對其內部數據的輸入和調用也需要通過輸入介面、輸出介面和程序的公共區域實現。

③ C語言函數調用關於數組的返回

不用返回了,你這里函數里直接對數組元素進行操作,調用完之後a就是排好的
#include<stdio.h>
main()
{
int
a[count];
……;
order(a,count);//在這個地方調用排序(地方一)
……
}
void
order(int
a[],int
count)
//數組按從小到大排序
{
int
i,j,x;
for(i=0;i<count;i++)
for(j=i+1;j<count;j++)
if(a[i]<a[j])
{
x=a[i];
a[i]=wa[j];
a[j]=x;
}
}

④ C語言中函數調用數組的問題

#include <stdio.h>
void Read(int A[]);
main()
{
int i,j,A[6];
for(i=0;i<6;i++)
{
A[i]=1;
}
Read(A);
while(1);
}
void Read(int A[])
{
int i,j;
for(i=0;i<6;i++)
{
printf("%d\n%d\n",A[i],i);
}
}

你把程序改成這樣就行了,不用加什麼頭文件了吧,不是已經有一個#include<stdio.h>了嗎

⑤ C語言調用帶數組的函數為什麼要這么寫

首先int max(int a[])這個函數參數的意思是接受一個數組的首地址,也就是說調用的時候必須是地址,也可以說是指針;
如果調用寫成max(a[10]),這裡面a[10]為第十一個元素的值當然不行了,除非你就是把地址放在裡面了,強制有的編譯器應該可以通過但是會有警告。
其實理解了的話max(a)和max(&a[0])都是可以的,都表示把數組a的首地址傳過去。
可以多去了解一下指針,多上機操作,多練練就會理解的越深。

⑥ c語言二維數組怎麼用函數一個一個調用,這樣對嗎

對的,是我的第二種方法。

1.可以用指針。
void Func(int **array, int m, int n);
在轉變後的函數中,array[i][j]這樣的式子是不對的(不信,大家可以試一下),因為編譯器不能正確的為它定址,所以我們需要模仿編譯器的行為把array[i][j]這樣的式子手工轉變為:

*((int*)array + n*i + j);

2.可以用二維數組名作為實參或者形參,在被調用函數中對形參數組定義時可以指定所有維數的大小,也可以省略第一維的大小說明,如:

void Func(int array[3][10]);

void Func(int array[][10]);

二者都是合法而且等價,但是不能把第二維或者更高維的大小省略,如下面的定義是不合法的:
void Func(int array[][]);
因為從實參傳遞來的是數組的起始地址,在內存中按數組排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多 少列,不能只指定一維而不指定第二維,下面寫法是錯誤的:
void Func(int array[3][]);
實參數組維數可以大於形參數組,例如實參數組定義為:
void Func(int array[3][10]);
而形參數組定義為:
int array[5][10];
這時形參數組只取實參數組的一部分,其餘部分不起作用。

⑦ 關於c語言中數組作為函數參數的函數之間調用問題

1、新建一個數組作為參數項目,如圖所示:

⑧ C語言的函數調用和數組,eg:void abd(int arr[])

函數返回值類型:(void)也就是不需要返回值。
函數名:abd
函數參數:int型數組
這里調用的時候,需要給函數abd一個參數,可以是數組名,也可以是一個指向int數組的指針。
注意數組參數為數組,是傳址,也就是說如果abd函數對arr形參操作會改變外部函數實參的值。

熱點內容
編譯成debug版本 發布:2024-03-29 09:06:55 瀏覽:884
wms伺服器地址 發布:2024-03-29 09:05:55 瀏覽:415
mep編程器 發布:2024-03-29 09:05:13 瀏覽:139
大小s我們一家訪問人 發布:2024-03-29 09:03:16 瀏覽:532
造物者編程 發布:2024-03-29 08:50:27 瀏覽:534
sql技能 發布:2024-03-29 08:50:23 瀏覽:56
希沃安卓下載安裝應用在哪裡 發布:2024-03-29 08:22:51 瀏覽:631
python和excel 發布:2024-03-29 07:47:03 瀏覽:861
postfix源碼下載 發布:2024-03-29 07:42:03 瀏覽:143
怎麼在電腦上玩手機伺服器 發布:2024-03-29 07:30:13 瀏覽:141