當前位置:首頁 » 編程語言 » c語言參數是數組

c語言參數是數組

發布時間: 2023-02-14 00:48:43

1. c語言中,數組作為參數,怎樣在函數之間傳遞的

很簡單的,數組作為函數參數傳遞的時候只要是數組名就可以了,因為數組名本身就是數組的首地址 .給個程序看看

#include<stdio.h>
#define N 3
int array[N][N];
void main()
{
//在主函數內聲明被調函數
void convert(int array[][3]);
int i,j;
printf("輸入數組:\n");
for(j=0;j<N;j++)
for(i=0;i<N;i++)
scanf("%d",&array[i][j]);
printf("\n");
for(j=0;j<N;j++)
{
for(i=0;i<N;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//調用矩陣轉置函數
convert(array);
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)//設置數組中轉置矩陣元素交換
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}

2. C語言中數組作為函數參數

C中數組名代表該數組的首地址,
char
s[]="abc";
s代表的就是『a』在內存中的地址
以地址作參數
,實參和形參同時改變

3. c語言怎麼將數組作為函數參數傳入

一維數組的元素作為函數實參,與同類型的簡單變數作為實參一樣,是單向的值傳遞,即數組元素的值傳給形參,從而形參是改變不影響實參

數組名代表著整個數組的地址,如果一維數組的名字作為函數實參,傳遞的是整個數組,即形參數組和實參數組完全相同,是存放在同一存儲空間的同一個數組。這樣形參數組
修改時,實參數組也同時被修改了。形參數組的元素個數可以省略。
#include<stdio.h>

//數組作為函數參數,可以省略元素個數
//數組作為函數參數,傳遞是整個數組的地址,修改了函數形參數組元素的值,會影響到外面的實參數組
void change(int array[])
{
printf("array ==%p\n",array);

array[0] = 100;
}

int main()
{
int ages[6] = {10,11,13,15,11,18};

printf("array ==%p\n",ages);

change(ages);

printf("%d\n",ages[0]);

return 0;

}

輸出結果為: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100

4. 在C語言中,數組作為參數,是怎樣在函數之間傳遞的啊

數組作為參數是按地址傳遞的
數組名就是數組的首地址。因此在數組名作函數參數時所進行的傳送只是地址的傳送, 也就是說把實參數組的首地址賦予形參數組名。形參數組名取得該首地址之後,也就等於有了實在的數組。實際上是形參數組和實參數組為同一數組,共同擁有一段內存空間。

5. C語言 數組做參數

strcmp的參數里p[j]和p[j+1]是指針數組的元素,裡面存放的是字元串的首地址。在c語言中,字元串都是用首地址來表示的,所以可以吧指針數組中的地址值說成是代表字元串。

6. C語言數組當參數傳遞

在學習C語言的過程中遇到數組作為參數傳遞的問題

一維數組:

這樣我們可以很順利的在test去遍歷這個數組a,當然我們還可能傳遞指針:

一般來數參數的傳遞是值傳遞,也就是說實參傳給形參,形參發生改變時實參並不會改變,(單向)但是數組在傳遞的時候是地址傳遞,只要形參發生了變化,實參也會發生變化(雙向)。

這樣傳遞數組就會發現一個問題,我沒有辦法獲取到數組的長度。獲取數組的長度我們一般用:

我們會發現n的值一直是2!為什麼會這樣呢!?
因為,a是函數參數,到了本函數中,a只是一個指針(地址,系統在本函數運行時,是不知道a所表示的地址有多大的數據存儲空間,這里只是告訴函數:一個數據空間首地址),所以,sizoef(a)的結果是指針變數a占內存的大小,一般在64位機上是8個位元組。int類型是4個位元組,所以,結果永遠是2,因此,我們要向獲取數組長度要怎麼辦呢?

我可以在初始化數組的地方獲取到數組的長度,作為參數傳遞過來:

這樣做我們可以獲取到數組的長度。

二維數組:

二維數組作為參數傳遞是後我們不可以像以為數組那樣直接,如:

會發現編譯都編譯不通過,報「[Error] declaration of 'a' as multidimensional array must have bounds for all dimensions except the first」這個錯,意思是多維數組的定義必須有一個除第一個之外的所有維度的邊界,比如:

這樣就OK了,但是我們是動態分配的數組不知道這個維度是多少的時候怎麼辦?這時候我們可以用指針當做一維數組來操作:

這樣我們發現不能更靈活的去定位到某一行某一列,這樣我們需要手工改變定址方式:

7. c語言 數組作為參數傳遞

調用時把【】去掉,表示掉用這個數組的所有元素,數組的名稱表示數組第一個元素的地址。
數組的定義可以寫成:
int
table[]={1,2,3,}
或者table[3],不能寫成table[],因為系統在定義數組時就給數組分配了地址,table[]沒有確定元素的個數,不能分配地址空間。
但是作為形參,可以這樣寫,void
tab(int
table[])
,不知道為什麼,呵呵

熱點內容
手機上能搭建ftp伺服器嗎 發布:2024-11-08 20:33:30 瀏覽:205
linux抓包工具 發布:2024-11-08 20:25:07 瀏覽:459
我的世界神奇寶貝伺服器聯機生存 發布:2024-11-08 20:17:07 瀏覽:723
溫州少兒編程 發布:2024-11-08 20:16:28 瀏覽:550
伺服器硬體有什麼 發布:2024-11-08 20:13:52 瀏覽:320
windows存儲分層 發布:2024-11-08 20:04:34 瀏覽:754
淘寶客服電腦伺服器 發布:2024-11-08 19:39:26 瀏覽:911
伺服器4t如何擴容8t 發布:2024-11-08 19:32:27 瀏覽:298
網易我的世界電腦版好玩伺服器 發布:2024-11-08 19:16:06 瀏覽:414
學校電腦配置有哪些 發布:2024-11-08 19:00:40 瀏覽:267