當前位置:首頁 » 編程語言 » c語言如何傳遞數組

c語言如何傳遞數組

發布時間: 2022-05-13 15:24:34

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

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

2. 請問在C語言中,函數傳參時怎樣利用指針傳遞數組

數組名就是指針,例如:

#include <stdio.h>

voidpr(char *p)

{

printf(p);

}

void main(void)

{

char s[] = "abc";

pr(s);

}

(2)c語言如何傳遞數組擴展閱讀:

注意事項

非數組類的聲明盡量以指針的方式進行比較好。倘若一個指針指向的內存並不是一個數組,那麼採用數組名的聲明方式或許就會給人產生錯誤的引導。類似的,如果指向的是一個數組區域,則會給人以更加豐富的信息。例如:

int main(int argc,char* argv[])

{

/* code here */

}

int main(int argc,char** argv)

{

/* code here */

}

兩種方式完全等價,但是前面一種能夠更清晰地看出:這個參數是指向某個元素起始地址的指針,而後面的這種方式則不能夠直觀地看出這種含義。

3. C語言中怎麼將數組作為函數傳遞初學,求解

屬於地址傳遞,在函數里修改的話,將直接影響調用方的數值。這是因為數組名代表這個數組的首地址,不過是靜態不可更改的而已。在函數里用引用[i]下標時,就是找到這個數組第i號元素的地址進行修改的。所以是第於是地址傳遞。

4. 在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;
}
}

5. 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

6. c語言函數怎麼傳數組

C和C++都沒有辦法傳數組,只能傳「指針」,指針和數組的差別就在於函數內無法檢測數組的尺寸

7. c語言數組在函數中的傳遞

c語言中、數組在函數中的傳遞可以數組元素的傳遞!還有就是數組名的傳遞!其實、數組名的傳遞類似指針!就是把數組的元素的首地址傳到形參的!

8. c語言數組如何在函數中傳遞不要指針傳遞

數組只能通過指針傳遞,不能通過值傳遞。
數組參數屬於指針參數,指針參數即時傳址參數(或叫引用參數), 如果想在函數中修改參數的值, 這是唯一的途徑.
如果把數組當作參數, 不管願意與否, 它就是指針, 指向第一個值的指針.
1. 數組參數就是指向第一個元素的指針: #include <stdio.h>

void getArr(int p[], int si);

int main(void)
{
int ns[] = {1,2,3,4,5};

getArr(ns, sizeof(ns)/sizeof(ns[0]));

getchar();
return 0;
}

void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}

2. 乾脆直接聲明為指針: #include <stdio.h>

void getArr(int *p, int si);

int main(void)
{
int ns[] = {1,2,3,4,5};

getArr(ns, sizeof(ns)/sizeof(ns[0]));

getchar();
return 0;
}

void getArr(int *p, int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}

3. 即使你在形參中指定維數也不起作用: #include <stdio.h>

void getArr(int p[2], int si);

int main(void)
{
int ns[] = {1,2,3,4,5};

getArr(ns, sizeof(ns)/sizeof(ns[0]));

getchar();
return 0;
}

void getArr(int p[2], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}

4. 既然是指針, 其值就有被修改的可能: #include <stdio.h>

void getArr(int p[], int si);

int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;

getArr(ns, sizeof(ns)/sizeof(ns[0]));

for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}

getchar();
return 0;
}

void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
p[i]++;
}
}

5. 如果是字元數組, 它自己能判斷數組尾界: #include <stdio.h>

void getArr(char p[]);

int main(void)
{
char ns[] = "ABCDEFG";

getArr(ns);

getchar();
return 0;
}

void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
}
}

9. c語言中如何把一個數組賦給另一個數組啊

第一個問題,用for循環吧第一個數組的值
給第二個,
第二個問題,可以,完全可以,第一個矩陣剛好是第二個的轉制矩陣,當然可以了。

10. C語言中,數組做函數參數如何才能按值傳遞

傳數組給一個函數,數組類型自動轉換為指針類型,因而傳的實際是地址。

void func(int array[10])
void func(int array[])
void func(int *array)

所以以上三種函數聲明完全等同。

實際情況是,數組做參數,完全無法按值傳遞。這是由C/C++函數的實現機制決定的。

下一個問題是:為什麼偏要按值傳遞呢?當要在一個函數內使用一個數組時,傳一個指針進去不就行了?只要能訪問到我們所要的數據並對其進行操作,何苦鑽牛角尖。

熱點內容
校園網可以搭建伺服器地址 發布:2025-05-11 04:54:40 瀏覽:784
noip演算法 發布:2025-05-11 04:53:51 瀏覽:50
有什麼我的世界伺服器啟動器 發布:2025-05-11 04:50:41 瀏覽:295
寫shell腳本 發布:2025-05-11 04:37:41 瀏覽:935
電腦伺服器打開有什麼用 發布:2025-05-11 04:36:49 瀏覽:98
sqlserver2008查詢時間 發布:2025-05-11 04:15:28 瀏覽:386
安卓孤膽車神被封號怎麼解封 發布:2025-05-11 04:05:22 瀏覽:940
高壓洗車泡沫怎麼配置 發布:2025-05-11 04:00:47 瀏覽:547
騰訊輕量伺服器怎麼使用 發布:2025-05-11 03:52:46 瀏覽:174
4位密碼組合有多少種至少有一個0 發布:2025-05-11 03:44:03 瀏覽:338