當前位置:首頁 » 編程語言 » c語言函數傳遞參數

c語言函數傳遞參數

發布時間: 2025-07-17 17:24:50

1. c語言:字元串做為函數參數傳遞

1、值傳遞

void swap(int x,int y)

{ int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

}

執行後,並不會交換。

2、引用傳遞

void swap(int &x,int &y)

{ int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

printf("a=%d b=%d ", a, b);

}

執行後,發生交換。

3、指針傳遞

void swap(int *x,int *y)

{ int temp = *x; *x = *y; *y = temp;

}void main()

{

int a = 10, b = 20;

swap(&a, &b);

printf("a=%d b=%d ", a, b);

}

執行後,發生交換。

參數傳遞只有上面三種,但是如果加上數組,就會產生幾種新形式。

首先,明確數組型變數名本身只是該數組所佔存儲空間的首地址:

int a[3] = { 1, 2, 3 }; int *p = a; //等價於下行 //int *p = &a[0];

printf("%d", *p);

典型的數組做參數。

void fun(char s[]){ for (int i = 0; s[i] != ''; i++)

printf("%c", s[i]);

}void main()

{ char str[] = "Hello World!";

fun(str);

}

函數調用時,這里系統不會為形參分配數組存儲空間,而是僅僅分配一個存放數組地址(第一個元素地址)的存儲空間,此後,將實參數組的首地址傳遞給形參變數。

其實本質與下相同,只不過還是數組形式的(數組名代替指針)。

既然數組型變數名本身只是該數組所佔存儲空間的首地址,我們當然可以用指針做形參來接收數組實參。

void fun(char *p){ while (*p)

{

printf("%c", *p);

p++;

}

}void main()

{ char str[] = "Hello World!";

fun(str);

}

不過問題是如果這樣,無法把握數組結束(除非知道數組長度)。而對於字元數組(上例),由於字元串末尾有結束標志''(ascii碼正好是0),所以就很容易利用指針來判斷字元串是否結束。

(1)c語言函數傳遞參數擴展閱讀:

調用帶參數的函數:

在調用函數時,可以向其傳遞值,這些值被稱為參數。

這些參數可以在函數中使用。

可以發送任意多的參數,由逗號 (,) 分隔:

myFunction(argument1,argument2)。

當聲明函數時,請把參數作為變數來聲明:

function myFunction(var1,var2){這里是要執行的代碼}。

變數和參數必須以一致的順序出現。第一個變數就是第一個被傳遞的參數的給定的值,以此類推。

按值傳遞參數:

按值傳遞參數時,是將實參變數的值復制一個到臨時存儲單元中,如果在調用過程中改變了形參的值,不會影響實參變數本身,即實參變數保持調用前的值不變。

按值傳遞參數時,需要在參數名前加"ByVal"關鍵字。

按地址傳遞參數:

按地址傳遞參數時,把實參變數的地址傳送給被調用過程,形參和實參共用內存的同一地址。在被調用過程中,形參的值一旦改變,相應實參的值也跟著改變。

如果實參是一個常數或表達式,Visual Basic 6.0會按"傳值"方式來處理,按地址傳遞不需要"ByVal"關鍵字。

按數組傳遞參數:

在VB6.0中,允許使用數組作為實參傳遞到子過程的形參中,數組傳遞必須採用地址傳遞的方式來傳遞參數。數組參數在傳遞時應注意以下兩個方面:

① 在實參和形參列表中只寫數組名,忽略維數的定義,但圓括弧不能省,當數組作為參數傳遞時,系統將實參數組的起始地址傳給過程,使形參數組也具有與實參數組相同的起始地址,若參數是多維數組,每維以逗號分隔。

② 被調過程可分別通過Lbound和Ubound函數確定實參數組的下界和上界。

參考資料來源:網路-參數傳遞

參考資料來源:網路-字元串



2. 以下關於C語言函數參數傳遞方式的敘述正確的是

【答案】:A

數據只能由實參單向傳遞給形參稱為「值傳遞」,而不能由形參傳回來給實參,A選項正確;數組名、指針等作參數,實參傳遞給形參的是地址值,這樣形參和實參就指向同一段內存單元,在函數體內對形參數據的改變也將影響到實參。實參和形參之間不可雙向傳遞。B、D選項錯誤。數據不能從形參傳遞給實參,C選項錯誤。

熱點內容
顯示linux隱藏文件 發布:2025-07-17 23:00:24 瀏覽:922
三地的演算法 發布:2025-07-17 22:56:09 瀏覽:353
能掃ip的伺服器 發布:2025-07-17 22:37:12 瀏覽:800
php獲取文字 發布:2025-07-17 22:36:13 瀏覽:297
編譯原理消除空產生是怎麼寫 發布:2025-07-17 22:30:48 瀏覽:979
訴狀上傳 發布:2025-07-17 22:07:28 瀏覽:337
ccs80中編譯器如何 發布:2025-07-17 21:54:58 瀏覽:403
未轉變者怎麼匹配伺服器 發布:2025-07-17 21:35:16 瀏覽:390
聯想伺服器型號怎麼看 發布:2025-07-17 21:35:14 瀏覽:239
優化大師登錄密碼是多少 發布:2025-07-17 21:34:39 瀏覽:409