首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 冒泡排序函數簽名不匹配:int[] 傳給 double[]

     編輯:程式設計綜合問答

錯誤信息

cannot convert 'int*' to 'double*' for argument 1 to 'void bubbleSort(double*, int)'

問題代碼

int list[10] = {3.3, 4.1, ...}; // 隱式截斷為整數
bubbleSort(list, 10); // 實參類型 int*
void bubbleSort(double list[], int size) { ... } // 形參類型 double*

修正

double list[10] = {3.3, 4.1, 6.3, 2.4, 3.9, 9.4, 4.2, 3.9, 2.5, 7.8};
bubbleSort(list, 10);

深度解析

  • C++ 中數組名退化為指針,類型必須**精確匹配**(int* ≠ double*),不存在隱式轉換。
  • 初始化列表 {3.3, 4.1} 賦給 int[] 會截斷小數部分,導致邏輯錯誤。
  • 若需同時支持多類型,可使用模板:
    template<typename T> void bubbleSort(T list[], int size);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved