亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言中隱藏結構體的細節

2020-02-24 14:25:19
字體:
來源:轉載
供稿:網友

在c++中,類和結構的主要區別在于類中的成員變量默認為private,而結構中的成員變量默認為public,下面就由武林技術頻道小編給大家介紹C語言中隱藏結構體的細節吧!

C++中我們尚可用類來替代結構體,但是,C語言中是沒有類的,只能用結構體,但很多時候,我們需要隱藏結構體的字段,不讓外界直接訪問,而是通過我們寫的函數進行間接訪問,這樣就提高了程序的封裝性。

實現方法,簡單來說,就是,結構體定義時,要定義在.c文件中,然后我們自己定義一些訪問結構體的函數,在.h文件中,只存放函數原型聲明和對結構體的聲明。

看個例子

.c文件中

//stu.c#include <stdio.h>#include <stdlib.h>#include <string.h>struct stu{  char id[10];  int score;};struct stu *new_stu(){  struct stu *s;  s = (struct stu *)malloc(sizeof(struct stu));    return s;}void set_id(struct stu *s,char *id){  strcpy(s->id,id);}char *get_id(struct stu *s){  return s->id;}

可以看到,在.c文件中,我定義了一個結構體,并且定義了一些用于操作這個結構體的函數。

在.h文件中

stu.h#ifndef STU_H#define STU_Hstruct stu;extern void set_id(struct stu *s,char *id);extern char *get_id(struct stu *s);extern struct stu *new_stu();#endif

在.h中我聲明了一下結構體struct stu,并且寫了函數的原型聲明,供其他文件調用。

在main.c中我引用了stu.h

下面是main.c

#include <stdio.h>#include "stu.h"int main(){  //struct stu s;  //s.score = 100;  //struct stu s = {{0}};    struct stu *s;  s = new_stu();    set_id(s, "950621");  char *id = NULL;  id = get_id(s);  printf("設置的id為:%s/n",id);  return 0;  }

可以看到,在main函數中,我先是定義了一個struct stu類型的指針,然后通過new_stu()給這個指針分配了空間,在通過另外兩個函數對其進行了操作。

這里需要注意一下我注釋掉的部分,說明一下:

這種情況下,不能定義struct stu類型的變量?。。?/p>

因為:

.h文件中,只是對結構體進行了聲明,并沒有結構體具體細節的描述,也就是在main.c中只是聲明了一下struct stu,這樣編譯器就知道有個結構體類型叫struct stu,但是它并不知道stu的內部細節。

我們都知道,定義一個變量,編譯器是要給它分配內存空間的,但是,此時編譯器并不知道stu的內部細節,也就不知道stu這個結構體的變量要占多少空間,自然無法分配內存。這樣在編譯時期就會報錯。

但是定義一個指針變量就不一樣啦,不管是什么類型的指針,占據的內存空間都是4個字節,編譯器只需要確定有個叫struct stu 的類型存在就好了,而.h中那個聲明,就是在告訴編譯器,有這么一個類型。

同時,這種情況下也不能訪問結構體的字段,比如,s->score=100;這條語句在編譯時就會報錯,原因和上面一樣,編譯器并不知道struct stu結構體的內部細節。

通過上面的方法,在除了stu.c文件之外的其他文件中,只能通過stu.c中定義的函數來間接操作結構體變量,而不能直接對結構體變量進行操作,包括不能創建一個結構體變量!

這樣就很好地體現了程序的封裝性,也提高了程序的安全性。但是就需要我們寫很多操作函數啦,包括創建結構體指針變量分配空間的函數。

我們也可以在.h文件中用typedef聲明一個結構體的指針類型,如? typedef struct sut * pStu;

這樣在main.c中就可以用pStu聲明結構體指針變量了。

上述是武林技術頻道小編為大家介紹的C語言中隱藏結構體的細節,希望對你學習這方面知識有所幫助,同時感謝大家繼續支持武林技術頻道!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂一区二区三区| 欧美日韩中文字幕日韩欧美| 国产日韩欧美中文| 欧美日韩加勒比精品一区| 中文字幕一区日韩电影| 亚洲www在线观看| 国产精品日韩在线| 最近中文字幕日韩精品| 日韩a**站在线观看| 91久久精品美女| 97久久精品在线| 亚洲成av人影院在线观看| 不卡中文字幕av| 欧美日韩国产一区中文午夜| 久久久国产精品免费| 久久免费成人精品视频| 国产精品久久久久久久电影| 国产玖玖精品视频| 亚洲国产精品推荐| 性欧美激情精品| 久久久久久网站| 国产精品白嫩美女在线观看| 精品国产精品三级精品av网址| 久久久av一区| 高清一区二区三区四区五区| 国产欧美一区二区三区在线看| 色七七影院综合| 日韩精品免费在线播放| 狠狠躁夜夜躁久久躁别揉| 亚洲性线免费观看视频成熟| 欧美专区中文字幕| 日韩精品视频在线观看网址| 国产欧美日韩最新| 中文字幕日韩视频| 最好看的2019的中文字幕视频| 国产日韩中文字幕在线| 国产精选久久久久久| 亚洲无av在线中文字幕| 亚洲成成品网站| 久久久久久久久久久网站| 亚洲a在线观看| 国产91精品网站| 在线免费看av不卡| 国产精品美女在线| 姬川优奈aav一区二区| 国内外成人免费激情在线视频| 91精品国产高清自在线| 欧美激情2020午夜免费观看| 久久成年人免费电影| 永久免费看mv网站入口亚洲| 韩日精品中文字幕| 成人久久一区二区三区| 欧美成在线观看| 在线丨暗呦小u女国产精品| 久久久久久久一| 中文字幕日韩专区| 亚洲欧洲日韩国产| 91精品国产色综合久久不卡98口| 国内精品模特av私拍在线观看| 亚洲第一福利网| 成人久久精品视频| 亚洲成人动漫在线播放| 国产精品91在线观看| 日本精品在线视频| 欧美区二区三区| 午夜精品久久久久久久久久久久久| 亚洲精品在线观看www| 欧美成人免费va影院高清| 亚洲精品在线看| 色999日韩欧美国产| 国产精品美腿一区在线看| 欧美日在线观看| 国产精品视频永久免费播放| 97视频在线观看视频免费视频| 亚洲精品天天看| 77777少妇光屁股久久一区| 57pao国产成人免费| 亚洲国产私拍精品国模在线观看| www.亚洲免费视频| 在线观看视频亚洲| 久久亚洲精品国产亚洲老地址| 日韩大胆人体377p| 精品亚洲aⅴ在线观看| 亚洲最大福利视频网站| 欧美性生交xxxxx久久久| 欧美综合在线观看| 成人美女av在线直播| 国产美女搞久久| 亚洲国产另类久久精品| 国外成人免费在线播放| 国产综合视频在线观看| 久久视频国产精品免费视频在线| 欧美性xxxxx| 日本精品久久久| 欧美日韩一区二区免费视频| 最新日韩中文字幕| 欧美一级淫片videoshd| 2019中文字幕全在线观看| 亚洲人成网在线播放| 韩国精品美女www爽爽爽视频| 欧美激情在线观看视频| 丝袜亚洲欧美日韩综合| 国产欧美精品日韩| 国产一区二区三区四区福利| 国产精品丝袜高跟| 亚洲高清免费观看高清完整版| 91国偷自产一区二区三区的观看方式| 欧美性受xxx| 91沈先生在线观看| 色偷偷噜噜噜亚洲男人的天堂| 欧美高清视频在线观看| 久久91亚洲人成电影网站| 欧美在线视频免费| 在线观看精品国产视频| 精品国内自产拍在线观看| 国产原创欧美精品| 亚洲性线免费观看视频成熟| 亚洲天堂色网站| 国产z一区二区三区| 在线亚洲男人天堂| 国产精品人成电影在线观看| 久久久久久成人精品| 97久久精品视频| 国a精品视频大全| 精品国产91乱高清在线观看| 午夜欧美大片免费观看| 欧美裸体xxxx极品少妇| 日本精品免费一区二区三区| 国产日韩欧美影视| 日韩亚洲综合在线| 中文字幕av一区中文字幕天堂| 夜夜嗨av一区二区三区四区| 狠狠色噜噜狠狠狠狠97| 久久精品99久久久香蕉| 亚洲一区中文字幕在线观看| 成人福利网站在线观看11| 日韩精品高清在线观看| 成人自拍性视频| 欧美日韩国产在线播放| 蜜臀久久99精品久久久无需会员| 亚洲国产一区二区三区在线观看| 欧美激情国产高清| 欧美激情图片区| 欧美高清理论片| 一区二区三区在线播放欧美| 亚洲free嫩bbb| 亚洲理论片在线观看| 欧美大肥婆大肥bbbbb| 91高清视频免费观看| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品成人av性教育| 久久久久久国产精品三级玉女聊斋| 欧美国产精品人人做人人爱| 亚洲欧美一区二区精品久久久| 亚洲欧洲美洲在线综合| 欧美视频国产精品| www.欧美免费| 俺也去精品视频在线观看| 91伊人影院在线播放| 日韩国产欧美区| 欧洲美女7788成人免费视频| 91精品久久久久久久久久久久久久| 久久人人爽人人爽人人片av高请| 国产网站欧美日韩免费精品在线观看|