首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言指標函數:以指標存取二維陣列學生成績

     編輯:關於C語言

前言

示範以「陣列指標」 (`float (*p)[4]`) 作為函數參數與回傳值,存取二維陣列特定行的資料。

關鍵宣告

float (*p)[4];  /* 指向含 4 個 float 的陣列 (即二維陣列的一行) */
float *p[4];    /* 指標陣列:4 個 float* — 完全不同! */

完整程式碼

#include 

float *search(float (*p)[4], int n) {  /* 參數:陣列指標 */
    return *(p + n);                   /* 回傳第 n 行首元素位址 */
}

int main() {
    float score[][4] = {{99,98,97,99}, {88,97,96,96}, {96,95,93,90}};
    int sno;
    printf("請輸入學號 (0、1、2):");
    scanf("%d", &sno);
    float *row = search(score, sno);   /* score 退化為 float(*)[4] */
    for (int i = 0; i < 4; i++)
        printf("%.1f ", *(row + i));   /* 遍歷該行 */
    printf("\n");
    return 0;
}

記憶體模型

score (float[3][4])
  ├─ row 0: 99 98 97 99
  ├─ row 1: 88 97 96 96
  └─ row 2: 96 95 93 90

p = score       → 指向 row 0
p + 1           → 指向 row 1 (位址 + 4*sizeof(float))
*(p + n)        → 第 n 行陣列,退化為 float* (首元素位址)

總結

掌握 `float (*p)[N]` 陣列指標宣告,即可在函數間傳遞二維陣列並保持行長度資訊,避免「指標退化失去列長」問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved