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

c語言傳參數

發布時間: 2025-03-23 09:36:10

❶ 以下關於c語言函數參數傳遞方式的敘述正確的是

【答案】:A

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

❷ C語言函數傳參數加一個&在前是什麼意思

C語言不能在函數參數前加&,能加&的是C++語言。
在C++語言里,類型後加&表示引用,如
int a;
int & b = a;
表示b引用a,b實際上就是a的別名。修改b的值也會導致a的值被修改。
函數傳參時,加&表示把實參直接傳遞給函數,而不加&表示是傳拷貝。
傳引用:將實參直接傳給形參,對於復雜點的較大的結構體或類類型,可以省去效率低的拷貝過程,但如果傳的是非const引用,那麼在函數內部對形參的修改將會導致實參也會被修改。
傳值:將實參拷貝一份傳給形參,因此對於傳遞大點的數據結構時效率相對較低,對形參的修改不會影響外部實參。
C語言中沒有引用的概念,都是以指針處理。

❸ 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),所以就很容易利用指針來判斷字元串是否結束。

(3)c語言傳參數擴展閱讀:

調用帶參數的函數:

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

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

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

myFunction(argument1,argument2)。

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

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

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

按值傳遞參數:

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

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

按地址傳遞參數:

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

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

按數組傳遞參數:

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

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

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

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

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



❹ 指針作為函數形參時是哪種傳遞方式

C語言中,函數參數傳遞方式為單向傳遞,即實參傳給形參,形參和實參佔用不同的內存單元。這意味著形參不能直接改變實參的值。但可以通過使用指針作為函數的形參來改變實參的值。這是因為指針可以改變其所指向的變數的值,而指針本身的值(即指針所指向的地址)不能改變。盡管指針本身是一個變數,但在函數調用中,其值不能改變,遵循單向傳遞規則。

要實現指針類型的參數在函數調用中改變其實參的值,可以使用二級指針。二級指針是一種指向指針的指針類型,通過它可以在函數內部修改原始指針所指向的內存單元的值。這使得指針類型的參數可以在函數調用中改變其實參的值。

理解指針在函數參數中的使用時,需要明確「指針」這個詞在不同上下文中的含義。p代表地址,即一個指針變數的地址;*p代表指針所指向的變數的值;**p代表指針所指向的變數(即指針類型變數)本身。這種理解有助於清晰地表達指針的用途和功能,從而提高代碼的可讀性。

盡管指針可以提高程序的靈活性,但它們也可能增加代碼的復雜性和可讀性。因此,在使用指針作為函數參數時,應謹慎考慮其帶來的影響。確保代碼清晰、易於維護,是編寫高質量程序的關鍵。

熱點內容
修改android版本 發布:2025-03-24 17:40:38 瀏覽:628
安卓手機怎麼識別u盤格式 發布:2025-03-24 17:39:56 瀏覽:190
linuxc文件夾 發布:2025-03-24 17:30:20 瀏覽:621
解壓跳跳床 發布:2025-03-24 17:15:52 瀏覽:6
java日期月 發布:2025-03-24 17:06:23 瀏覽:912
linux線程的實現 發布:2025-03-24 17:01:08 瀏覽:800
豐富存儲生物樣本類型 發布:2025-03-24 16:50:28 瀏覽:597
存儲過程遷移 發布:2025-03-24 16:44:47 瀏覽:703
sql正在還原 發布:2025-03-24 16:39:44 瀏覽:184
手機存儲盤符 發布:2025-03-24 16:24:37 瀏覽:645