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

C語言結構體數組指針操作指南:指向結構體變量與數組的指針定義、malloc 動態分配、三種訪問方式

     編輯:C 語言基礎

指向結構體變量的指針

struct stu { char name[20]; long num; struct data birthday; };
struct stu *p1, *p2;
p1 = malloc(sizeof(struct stu));  // 必須分配空間
p1->name; p1->num; p1->birthday.year;  // 箭頭運算符訪問成員

malloc 從堆分配空間,sizeof 計算類型大小。釋放用 free(p1)。

指向結構體數組的指針

定義 struct stu student[4], *p;,令 p = student;,p 指向數組首元素。三種訪問方式:

  1. 地址法:(p+i)->member 或 (student+i)->member,等價 &student[i]。
  2. 指針法:p++ 移向下一元素,用 p->member 訪問。
  3. 指針的數組表示法:p[i].member,效果同 student[i].member。

完整範例:輸出 4 學生資料

struct data { int day, month, year; };
struct stu { char name[20]; long num; struct data birthday; };
main() {
    struct stu *p, student[4] = {
        {"liying",1,{1978,5,23}}, {"wangping",2,{1979,3,14}},
        {"libo",3,{1980,5,6}}, {"xuyan",4,{1980,4,21}}
    };
    p = student;
    for (int i=0; i<4; i++)
        printf("%20s%10ld%10d//%d//%d\n",
               (p+i)->name, (p+i)->num,
               (p+i)->birthday.year, (p+i)->birthday.month, (p+i)->birthday.day);
}

輸出四行學生姓名、學號、出生年月日。

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