c++ - Mengapakah nilai pulangan bagi fungsi perbandingan tatasusunan ini kekal tidak berubah?
巴扎黑
巴扎黑 2017-05-16 13:24:28
0
2
648

Semasa latihan, anda dikehendaki menulis fungsi perbandingan tatasusunan

#include "iostream" using namespace std; int isEqual(int a[], int b[]) { int length_a = sizeof(a) / sizeof(a[0]); int length_b = sizeof(b) / sizeof(b[0]); if (length_a != length_b) { return 200; } else { for (int i = 0; i < length_a; i++) { if (a[i] != b[i]) { return 200; } } return 30; } } int main() { int arr1[4] = { 1,2,3,5 }; int arr2[3] = { 1,2,3 }; int flag = isEqual(arr1, arr2); cout << flag << endl; return 0; }

Tidak kira bagaimana nilai dua tatasusunan diubah, hasil keluaran fungsi ini tetap tidak berubah Apakah sebabnya? ...Terima kasih~

巴扎黑
巴扎黑

membalas semua (2)
为情所困

Dalam hantaran parameter fungsi, tatasusunan dihantar ke dalam fungsi dalam bentuk penunjuk, dan tidak akan ada panggilan mengikut nilai. Dalam parameter fungsi, int arr[4] akan merosot menjadi int *, dan 4 akan hilang, jadi a dalam fungsi isEqual sebenarnya hanyalah alamat pertama tatasusunan a.
Jika anda ingin menghantar penunjuk tatasusunan dan saiz tatasusunan pada masa yang sama, anda perlu menggunakan panjang tatasusunan sebagai parameter formal fungsi yang lain:
Contohnya:

#include "iostream" using namespace std; int isEqual(int a[],int length_a ,int b[],int length_b) { cout<
    小葫芦

    Sebab anda tersalah mengira panjang dua tatasusunan

    #include "iostream" using namespace std; int isEqual(int a[], int b[], int length_a, int length_b) { cout << length_a << length_b << endl; if (length_a != length_b) { return 200; } else { for (int i = 0; i < length_a; i++) { cout << a[i] << b[i] << endl; if (a[i] != b[i]) { return 200; } } return 30; } } int main() { int arr1[5] = { 2,1,2,3,5 }; int arr2[3] = { 1,2,3 }; int length_a = sizeof(arr1) / sizeof(arr1[0]); int length_b = sizeof(arr2) / sizeof(arr2[0]); int flag = isEqual(arr1, arr2, length_a, length_b); cout << flag << endl; return 0; }
      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!