一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C語言學(xué)習(xí)筆記【結(jié)構(gòu)體02】結(jié)構(gòu)體指針變量與結(jié)構(gòu)體變量的函數(shù)參數(shù)

 enchen008 2013-12-03

C語言學(xué)習(xí)筆記

之     結(jié)構(gòu)體指針變量

一提指針,那可是C語言的核心了,有多少學(xué)子曾拜倒在指針的腳下。單純的說指針,其實并不難,但是與其它的結(jié)構(gòu)搭配在一起,那可就愁死人了。比如說:數(shù)組一點都不難,但是與指針一起用,可就經(jīng)常麻煩了。結(jié)構(gòu)體也是一種結(jié)構(gòu),它與指針搭配怎么樣呢? 一起來看一下吧!

1:結(jié)構(gòu)體指針變量

和指針指向數(shù)組首地址一樣,指針也可以指向結(jié)構(gòu)體的起始地址。

形式形如:  struct  student  *p;

上述語句定義了一個指針變量p,它指向任何一個屬于struct student 類型的數(shù)據(jù)。通過指針去訪問所指結(jié)構(gòu)體變量的某個成員時,有兩種方法:

    (*p).score   或者   p->score(這是一種常用的方式。->是指向運算符)

比如:

訪問的時候:(*p).num=11031,或者 p->num=11031

2.程序?qū)嵗?/span>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
/*定義結(jié)構(gòu)體*/
struct student
{
   int num;
   char name[20];
   char sex;
   int age;
   float score;
};
/*初始化一個結(jié)構(gòu)體實例*/
struct student stu[3]={
    {11302,"Wang",'F',20,486.69},
    {11303,"Zhao",'F',25,466.59},
    {11304,"Xue",'M',26,483.59}
};
main()
{
    /*初始化一個student1的實例*/
    struct student student1={11305,"Li",'F',19,59.59};
    struct student *p,*q;//定義struct student類型的指針
    int i;
    p=&student1;//將student 1的結(jié)構(gòu)體的首地址賦給p,也就是p指向了student 1的首地址
    /*輸出:可以看到,訪問結(jié)構(gòu)體的成員,有三種方法*/
    printf("%s,%c,%f\n",student1.name,(*p).sex,p->score);
    q=stu;//將數(shù)組stu的首地址賦給q;
    /*for循環(huán)輸出數(shù)組中的成員*/
    for(i=0;i<3;i++,q++)
    {
        printf("%s,%c,%f\n",q->name,(*q).sex,stu[i].score);
    }
}


3.指針符號(->

P->num

P指向的結(jié)構(gòu)體中的成員

P->num++

先得到p所指向的結(jié)構(gòu)體成員num,然后使該num的值加1

++p->num

p所指向成員num的值加1,然后引用這個新的值

(p++)->num

先引用p->num的值,用完之后再使p1

(++p)->num

p1,然后引用p->num的值

4.結(jié)構(gòu)體變量和結(jié)構(gòu)體指針變量做函數(shù)參數(shù)

 結(jié)構(gòu)體變量以及結(jié)構(gòu)體指針變量均可以像int類型那樣作為函數(shù)的參數(shù)。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
/*定義結(jié)構(gòu)體*/
struct student
{
   int num;
   char name[20];
   char sex;
   int age;
   float score;
};
/*初始化一個結(jié)構(gòu)體實例*/
struct student stu[3]={
    {11302,"Wang",'F',20,486.69},
    {11303,"Zhao",'F',25,466.59},
    {11304,"Xue",'M',18,483.59}
};
/*輸出函數(shù),結(jié)構(gòu)體變量s做為函數(shù)參數(shù)*/
void print(struct student s)
{
   printf("%s,%d,%f\n",s.name,s.age,s.score);
}
/*增加成績的函數(shù),結(jié)構(gòu)體指針q作為函數(shù)參數(shù)*/
void add(struct student *q)
{
  if(q->age<=19)
      q->score=q->score+10;
}
main()
{
    struct student *p;
    int i;
    for(i=0;i<3;i++)
    {
      print(stu[i]);//stu[i]作為形參
    }
    for(i=0,p=stu;i<3;i++,p++)
    {
        add(p);//指向stu的指針變量p作為形參
    }
    printf("\n");
    for(i=0,p=stu;i<3;i++,p++)
    {
       print(*p);//*p作為形參,相當于stu[i]
    }
}


 上述程序注意的是:調(diào)用函數(shù)printadd都是void無返回值類型的函數(shù),如果是有返回值的,它的類型應(yīng)該是struct student類型,也就是說應(yīng)該是

語言

1
2
3
4
5
6
struct student add(struct student *q)
{
  if(q->age<=19)
  q->score=q->score+10;
  return *q
}


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲欧美中文日韩综合| 视频一区日韩经典中文字幕| 极品少妇嫩草视频在线观看| 国产在线小视频你懂的| 99久久国产精品成人观看| 男人和女人黄 色大片| 久久精品亚洲欧美日韩| 国产中文字幕一区二区| 欧美日本精品视频在线观看| 成年女人下边潮喷毛片免费| 夫妻激情视频一区二区三区| 东京热男人的天堂一二三区| 国产一区在线免费国产一区| 欧美一区二区三区性视频| 99福利一区二区视频| 九九热精彩视频在线免费| 最新国产欧美精品91| 欧美国产日本免费不卡| 日韩精品一区二区亚洲| 欧美日本亚欧在线观看| 都市激情小说在线一区二区三区| 欧美中文字幕日韩精品| 国产精品人妻熟女毛片av久| 日韩成人动作片在线观看 | 国产精品日韩欧美一区二区| 国产精品美女午夜视频| 麻豆国产精品一区二区| 中文字幕人妻综合一区二区| 丝袜av一区二区三区四区五区| 青青草草免费在线视频| 国产精品欧美激情在线播放| 少妇成人精品一区二区| 久久热在线视频免费观看| 91久久精品国产一区蜜臀| 国语久精品在视频在线观看| 欧美精品一区二区三区白虎| 又色又爽又无遮挡的视频| 国产成人亚洲欧美二区综| 经典欧美熟女激情综合网| 暴力性生活在线免费视频| 麻豆一区二区三区精品视频|