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

C 語言陣列參數傳遞:能否用變數名指定陣列元素?

     編輯:程式設計疑難解答

核心結論

不能。C 語言陣列參數退化為指標,編譯期僅保留位址與型別資訊,元素無「變數名」概念,運行期更無法透過名稱存取。

詳細說明

  • 陣列元素僅透過下標索引 (0 ~ n-1) 訪問。
  • 函數內部接收的是首元素位址,對參數的任何操作均基於位移計算。
  • 若需「名稱對應值」,請使用結構體 或 鍵值對陣列 (如 struct {char* key; int val;} map[]) 模擬。

正確傳遞方式

// 1. 傳遞陣列首址 + 長度
void process(int arr[], int len);  // 或 void process(int *arr, int len)

// 2. 主程式呼叫
int data[10] = {1,2,3};
process(data, 10);

// 3. 函數內部只能用下標
void process(int arr[], int len) {
    for (int i=0; i

替代方案:結構體模擬命名參數

typedef struct { int id; char name[20]; float score; } Student;
void printStudent(Student s); // 透過欄位名存取
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved