程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 基於結構體與指針的詳解

基於結構體與指針的詳解

編輯:C語言基礎知識
結構指針變量:結構指針變量的說明和使用一個指針變量用來指向一個結構變量時
結構指針變量中的值是所指向的結構變量的首地址。通過結構指針即可訪問該結構變量,這與數組元素的指針和函數指針的情況是相同的。
結構指針變量說明的一般形式為:
struct 結構名 * 結構指針變量名
例如: struct stu *pstu; 
其訪問的一般形式為:
(*結構指針變量).成員名 : (*pstu).num
或為:
結構指針變量->成員名  :pstu->num
應該注意(*pstu)兩側的括號不可少, 因為成員符“.”的優先級高於“*”。如去掉括號寫作*pstu.num則等效於*(pstu.num),這樣,意義就完全不對了。 
結構變量.成員名
(*結構指針變量).成員名
結構指針變量->成員名
這三種用於表示結構成員的形式是完全等效的。
結構數組指針變量:結構指針變量可以指向一個結構數組, 這時結構指針變量的值是整個結構數組的首地址。 結構指針變量也可指向結構數組的一個元素,這時結構指針變量的值是該結構數組元素的首地址。
設ps為指向結構數組的指針變量,則ps也指向該結構數組的0號元素,ps+1指向1號元素,ps+i則指向i號元素。 這與普通數組的情況是一致的。
代碼如下:

#include <stdio.h>
int main(void)
{
    int i;
    struct student
    {
        long int num;
        int      age;
        char*    name;
    }st[3]={{198,19,"zhangsan"}, {199,18,"lisi"},{200,19,"wangwu"}};  
    struct student*   p;
    p=st;
    printf("/n/n    NO.    age    name   /n");
    for(  ;p<=st+2;p++)
        printf("  %ld    %d   %s/n",p->num,p->age,p->name);
    getch();
    printf("/n/n    NO.    age    name   /n");
    for( p=st ;p<=st+2;p++)
       printf("  %ld    %d   %s/n",(*p).num,(*p).age,(*p).name);
    getch();
    return 0;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved