c語言傳參數
❶ 以下關於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] != '