當前位置:首頁 » 編程語言 » c語言參數傳遞
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言參數傳遞

發布時間: 2022-02-01 09:55:48

A. c語言中實際參數和形式參數的設置及傳遞方式

C語言中實際參數(實參)與形式參數(形參)之間的傳遞方式有傳值和傳地址兩種函數調用方式。


下面通過舉例來說明實參和形參的設置方法以及傳值與傳地址的兩種函數調用方式。

值傳遞方式:

#include<stdio.h>
voidfun(inta,intb)//此處a,b為形參
{
a++;
b++;
}
voidmian()
{
inta=1,b=2;
fun(a,b);//按傳值方式調用函數fun,此處a,b為實參
printf("%d,%d ",a,b);//輸出a=1,b=2
}

地址傳遞方式:

#include<stdio.h>
voidfun(int*a,int*b)
{
*a=4;
*b=5;
}
voidmian()
{
inta=1,b=2;
fun(&a,&b);//按傳地址方式調用函數fun
printf("%d,%d ",a,b);//輸出a=4,b=5
}

B. C語言函數調用參數傳遞的是什麼

分兩種,一種是按值傳遞,一種是按地址傳遞,
按值傳遞就是在子函數中開辟出一個臨時內存空間,將傳遞的數值保存在這個空間中,當子函數結束後,這個內存空間就會釋放了!
按地址傳遞則是把主函數開辟的某個內存空間首地址傳遞給子函數,子函數可以直接讀寫主函數上這段內存空間,當子函數結束後,這部分空間不會被釋放,主函數將繼續使用這段空間!

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

調用時實參只寫數組名不加方括弧就是引用數組整體

D. C語言中的參數傳遞方式有哪些

是函數參數的傳遞方式吧。c語言的話是:值傳遞和指針(地址)傳遞。c++的話除了c語言的兩種方式外還有引用傳遞。

E. c語言形參和實參是怎樣傳遞數據的

我簡單描述一下~c語言傳遞參數機構是這樣的~非指針類的數據傳遞參數時傳數值,指針類數據傳遞參數時傳地址
(這里數組名也算指針)
比如
int max(int a,int b);
這時候如果調用這個函數max(x1,x2);僅僅將x1和x2的數值傳遞給函數max,a與x1佔有不同的內存區域
int max(int *a,int *b);
這時候如果調用這個函數max(&x1,&x2);則將x1、x2的地址傳遞給a、b,a指向x1的地址,也就是說a可以操控x1的數值。

如果想具體了解可以參看譚浩強教授寫的~c語言程序設計~很好很強大~

F. C語言函數參數傳出怎麼用

struct Student st;
void function(struct Student st);這種形式就是傳遞地址;
void fuction2(struct Student * pst);這種形式就是傳遞結構體的地址;
調用這兩個函數的形式如下:
function(st);
fuction2(&st);
一般推薦第二種方式,因為第一種方式需要傳遞整個結構體,需要開辟sizeof(struct student)這么大的內存空間,開銷太大,第二種方式則只需要開辟四個位元組的內存,用來存放地址;

G. c語言中,帶參數的主函數,如何傳遞參數給它

不可能按值傳遞的,設想一下
type
*arr
=。。。。。
sizeof(arr)為100萬了位元組,如果按照值傳遞,就要創建一個臨時變數temp也為100萬個位元組,效率豈不是太低了。再可能arr是堆內存,參數傳遞是要屬性相同,值相同,難道系統自行去new一段內存,這該用戶去釋放
還是系統自動回收呢?

H. c語言中,帶參數的主函數,如何傳遞參數

是將實參的值按一定順序賦給形參
值的傳遞是單方面的
形參值的改變並不影響實參

I. 關於C語言的參數傳遞順序……

樓主您好,首先您要理解一下i++的行為,即先用i,然後再++,所以,傳遞參數時先用i=1的值,用完瞭然後++,即先用x=y=1=i,然後i=2;我把程序給您改一下,你就會根據結果看的很明白了。
#include <stdio.h>
int f(int x,int y)
{
printf("x=%d\n",x);//顯示傳遞過來的i值
printf("y=%d\n",y); //顯示傳遞過來的i++值
if(x>y) return 1;
else if(x<y) return -1;
else return 0;
}
int main()
{
int i=1;
int k;
k=f(i,i++);
printf("i=%d\n",i);//顯示執行完函數後i的值
printf("k=%d\n",k);
return 0;
}
結果:x=1 y=1 i=2 k=0
樓主您的部分理解是對的,而結果有時候跟編譯器有關,它的編譯順序是不一樣的。
f(++i,i) 和f(i,++i)運行結果都與理解一致, f(i++,i) 和f(i,i++)運行結果與理解不一致;++是一種縮寫,對於y=i++,就是y=i,然後i=i+1;對於y=++i,就是i=i+1,然後y=i.

J. C語言中main()的參數傳遞

傳進來的都是指向字元串類型的指針,不能直接用==判斷,得用strcmp函數來做。
if(strcmp(argv[1],"/ON")||strcmp(argv[2],"1"))