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

c語言實參數組與形參數組

發布時間: 2022-08-21 04:24:13

Ⅰ 編程c語言形參與實參是什麼意思

形參:全稱為"形式參數"是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳如的參數.
實參:全稱為"實際參數"是在調用時傳遞個該函數的參數.
形參和實參的類型必須要一致,或者要符合隱含轉換規則,
當形參和實參不是指針類型時,在該函數運行時,形參和實
參是不同的變數,他們在內存中位於不同的位置,形參將實
參的內容復制一份,在該函數運行結束的時候形參被釋放,
而實參內容不會改變.
而如果函數的參數是指針類型變數,在調用該函數的過程
中,傳個函數的是實參的地址,在函數體內部使用的也是
實參的地址,即使用的就是實參本身.所以在函數體內部
可以改變實參的值.
給你一個很簡單的例子:
int
f(int
b)
/*b為形參*/
{
return
b;}
main()
{int
a=1;
printf("%d",f(a));/*a為實參*/
}

Ⅱ C語言中實參與形參的區別

  1. 形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。實參出現在主調函數中,進入被調函數後,實參變數不能使用。

  2. 形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。而實參在主調函數中已分配內存單元。

  3. 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,都必須具有確定的值,以便把這些值傳送給形參。

  4. 實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。

  5. 函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。

Ⅲ C中數組在函數中形參和實參的區別

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void printArray(int a[],int num){
int i;
for(i=0;i<num;++i){
printf("%d ",a[i]);
}
}

//void sortArray(int a[],int num){
//數組做函數參數的退回問題,退回為一個指針
//結論1:把數組的內存首地址和數組的有效長度給被調函數
// 結論2: 實參的a和形參的a本質不一樣 ,實參是數組形參把他當數組處理
// 形參寫在函數上,和寫在函數內是一樣的,只不過是具有對外的屬性而已
void sortArray(int *a,int num){
int i,j,temp;
//排序
//int num2 = sizeof(a)/sizeof(a[0]);
//這里測試的是關於指針的長度,可以看到num2等於1不等於原來的長度
//證明傳過來的只是一個指針,數組退化成指針了 ,所以說
//printf("num2=%d\n",num2);

for(i=0;i<num;++i){
for(j=i+1;j<num;++j){
if(a[i]<a[j]){
//交換
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main(){
int a[] = {16,35,24,68};
int num;
//數組總體長度除以單個的長度
num = sizeof(a)/sizeof(a[0]);
printArray(a,num);
printf("排序前!\n");
sortArray(a,num);
printArray(a,num);
printf("排序後!\n");
return 0;
}

Ⅳ c語言中形參和實參是什麼意思有什麼區別

形參就是形式參數,用一個變數代表大家。實參就是實際參數,用一個 確切的數值代替形式參數,可以是表達式。實際參數與形式參數的參數個數、類型和順序都應一樣,如果不一樣的話,系統會強制轉換,這樣會造成數據的丟失。實 參向形參的傳遞是值的傳遞。

這個值就是對實參的表達式進行計算的結果,它可以是常量值、變數值、數組元素、函數值等。如果實參是數組名了,那麼它傳送的就是地址的值了。比如:
double power(double x ,int n)定義一個雙精度參數
power(3.0,5) 調用
x n 是形參,3.0,5是實參。如果上面定義的是整形 double power(int x ,int n),下面調用的是power(3.3,5)那麼實參中3.3會被轉換成3,一部分數據丟失了。

Ⅳ c語言中,形參和實參是什麼意思有什麼區別

形參就是形式參數,用一個變數代表大家。實參就是實際參數,用一個 確切的數值代替形式參數,可以是表達式。實際參數與形式參數的參數個數、類型和順序都應一樣,如果不一樣的話,系統會強制轉換,這樣會造成數據的丟失。實 參向形參的傳遞是值的傳遞。

這個值就是對實參的表達式進行計算的結果,它可以是常量值、變數值、數組元素、函數值等。如果實參是數組名了,那麼它傳送的就是地址的值了。比如:
double power(double x ,int n)定義一個雙精度參數
power(3.0,5) 調用
x n 是形參,3.0,5是實參。如果上面定義的是整形 double power(int x ,int n),下面調用的是power(3.3,5)那麼實參中3.3會被轉換成3,一部分數據丟失了。

Ⅵ C語言實參數組與形參數組問題

這個問題是這樣的了,因為你的數組定義的是二維大小是20*20 地址空間已經分配好了,而但你輸入的m和n的值小於20的時候,你只是先給第一維賦值,如果輸入的數字大於20,在對第二維賦值,但你輸入一些小的m和n時,其實二維數組你還沒有賦值,他們的值還是你默認給的0啊,而當你用二維數組去讀數的時候 a[0][j]的值就是從a[0]開始,所以結果是對的.
但是a[1][j]的地址卻是&a[0][0]+4*20,可以看出你並沒對那裡賦值。
你可以把數組改小一點,如3*3啊,4*4啊什麼的然後輸入看結果就是對的了
你可以用我的這個程序去看看運行後的結果,你就會明白了:

#include<string.h>
main()
{
void enter(int ar[],int n,int m);
int a[20][20]={0},n,m,i,j;
printf("enter the N and M:");
scanf("%d%d",&n,&m);
enter(a[0],n,m);
printf("\n");
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf("%3d-%d ",a[i][j],&a[i][j]); //列印每個數組元素的地址
printf("\n");
}
system("pause");
}
void enter(int ar[],int n,int m)
{
int i,j;
for(i=0;i<n*m;i++)
scanf("%d",&ar[i]);
for(i=0;i<n*m;i++)
printf("%d ",&ar[i]);//列印地址
printf("\n");

}

Ⅶ c語言中 數組實參和形參的設置。

可以,你這個問題涉及到變數的作用域的問題,a[10]這個數組變數只作用於main()函數中,新的函數fun中的實參*a作為在函數作用於中有效,所以雙方互不影響。