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

C 語言編譯錯誤 C2040:變量名衝突導致類型不匹配

     編輯:程式設計綜合問答

錯誤代碼片段


int a[SIZE], temp1, temp2, i, a; // 錯誤:數組 a 與整型變量 a 重名
// ...
for(i=0;i<=4;i++) { scanf("%d",&a[i]); } // 編譯器無法判斷 a 是數組還是整數

錯誤原因

在同一作用域內,標識符不能重複聲明。int a[SIZE] 聲明數組 a,隨後 int ..., a 再次聲明整型變量 a,導致編譯器報錯 C2040: 'a' : 'int' differs in levels of indirection from 'int [5]'(一級指針/整型 vs 數組類型,間接引用層級不同)。

修正方法

重命名其中一個變量,語義清晰:


int arr[SIZE], temp1, temp2, i, input_val; // 數組改名 arr,單值改名 input_val
for(i=0; i<SIZE; i++) { scanf("%d", &arr[i]); }

良好習慣建議

  • 開啟編譯器警告 -Wall -Wextra (GCC/Clang) 或 /W4 (MSVC),提前發現遮蔽/重名問題。
  • 使用靜態分析工具(Cppcheck, Clang-Tidy, SonarQube)掃描項目。
  • 命名規範:數組用復數/後綴 _arr/_list,單值用單數名詞。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved