Hubungan antara parameter formal dan parameter sebenar dalam bahasa C ialah: parameter formal ialah salinan nilai parameter sebenar. Tidak kira jenis parameter, parameter formal yang dihantar ke subfungsi hanyalah nilai parameter sebenar. Oleh itu, apabila menukar nilai pembolehubah parameter formal itu sendiri, ia tidak ada kaitan dengan parameter sebenar. Dalam erti kata lain, perubahan kepada parameter formal tidak akan menjejaskan parameter sebenar.
Walau bagaimanapun, jika jenis parameter ialah jenis penunjuk, anda boleh menukar data dalam alamat parameter sebenar dengan mengubah suai data dalam alamat yang ditunjukkan oleh pembolehubah penunjuk. . bukan alamat itu sendiri.
Kod rujukan:
//Kod pertukaran salah 1
voidswap1(inta,intb)//Parameter bukan penunjuk kepada data yang akan ditukar
{
intt=a;
;a
b= t;
}
//Kod pertukaran salah 2
voidswap2(int*a,int*b)
{
int*t=a;//Tukar pembolehubah parameter formal itu sendiri
a=b;
b=t;
}
//Kod pertukaran yang betul
voidswap(int*a,int*b)
{
intt=*a;//Tukar data secara formal alamat pembolehubah parameter, Pembolehubah penunjuk kekal tidak berubah
*a=*b;
*b=t;
}
Mengapa fungsi pertukaran bahasa C tidak boleh dilaksanakanPoster perlu mempunyai pemahaman yang lebih mendalam daripada parameter dan nilai pulangan fungsi~Pertama sekali Nilai pulangan fungsi mestilah hanya satu pembolehubah Pulangan(a,b) dalam fungsi swap anda mungkin tidak melepasi kompilasi~
void swap(int*a, int*b)
{
int t;
t=*a;
*a=*b;
*b= t;
}
Kaedah yang dipanggil utama ialah swap(&a,&b);
Atas ialah kandungan terperinci Pertukaran (pertukaran mata wang) yang manakah syiling CSWAP disenaraikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!