中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

如何用C語(yǔ)言隱藏結(jié)構(gòu)體

這篇文章主要介紹了如何用C語(yǔ)言隱藏結(jié)構(gòu)體的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇如何用C語(yǔ)言隱藏結(jié)構(gòu)體文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

成都創(chuàng)新互聯(lián)是一家專業(yè)提供龍川企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、html5、小程序制作等業(yè)務(wù)。10年已為龍川眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

C++中我們尚可用類(lèi)來(lái)替代結(jié)構(gòu)體,但是,C語(yǔ)言中是沒(méi)有類(lèi)的,只能用結(jié)構(gòu)體,但很多時(shí)候,我們需要隱藏結(jié)構(gòu)體的字段,不讓外界直接訪問(wèn),而是通過(guò)我們寫(xiě)的函數(shù)進(jìn)行間接訪問(wèn),這樣就提高了程序的封裝性。

實(shí)現(xiàn)方法,簡(jiǎn)單來(lái)說(shuō),就是,結(jié)構(gòu)體定義時(shí),要定義在.c文件中,然后我們自己定義一些訪問(wèn)結(jié)構(gòu)體的函數(shù),在.h文件中,只存放函數(shù)原型聲明和對(duì)結(jié)構(gòu)體的聲明。

看個(gè)例子

.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文件中,我定義了一個(gè)結(jié)構(gòu)體,并且定義了一些用于操作這個(gè)結(jié)構(gòu)體的函數(shù)。

在.h文件中

stu.h
#ifndef STU_H
#define STU_H

struct stu;
extern void set_id(struct stu *s,char *id);
extern char *get_id(struct stu *s);

extern struct stu *new_stu();

#endif

在.h中我聲明了一下結(jié)構(gòu)體struct stu,并且寫(xiě)了函數(shù)的原型聲明,供其他文件調(diào)用。

在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("設(shè)置的id為:%s\n",id);
  return 0;


  
}

可以看到,在main函數(shù)中,我先是定義了一個(gè)struct stu類(lèi)型的指針,然后通過(guò)new_stu()給這個(gè)指針?lè)峙淞丝臻g,在通過(guò)另外兩個(gè)函數(shù)對(duì)其進(jìn)行了操作。

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

這種情況下,不能定義struct stu類(lèi)型的變量!!!

因?yàn)椋?/p>

.h文件中,只是對(duì)結(jié)構(gòu)體進(jìn)行了聲明,并沒(méi)有結(jié)構(gòu)體具體細(xì)節(jié)的描述,也就是在main.c中只是聲明了一下struct stu,這樣編譯器就知道有個(gè)結(jié)構(gòu)體類(lèi)型叫struct stu,但是它并不知道stu的內(nèi)部細(xì)節(jié)。

我們都知道,定義一個(gè)變量,編譯器是要給它分配內(nèi)存空間的,但是,此時(shí)編譯器并不知道stu的內(nèi)部細(xì)節(jié),也就不知道stu這個(gè)結(jié)構(gòu)體的變量要占多少空間,自然無(wú)法分配內(nèi)存。這樣在編譯時(shí)期就會(huì)報(bào)錯(cuò)。

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

同時(shí),這種情況下也不能訪問(wèn)結(jié)構(gòu)體的字段,比如,s->score=100;這條語(yǔ)句在編譯時(shí)就會(huì)報(bào)錯(cuò),原因和上面一樣,編譯器并不知道struct stu結(jié)構(gòu)體的內(nèi)部細(xì)節(jié)。

通過(guò)上面的方法,在除了stu.c文件之外的其他文件中,只能通過(guò)stu.c中定義的函數(shù)來(lái)間接操作結(jié)構(gòu)體變量,而不能直接對(duì)結(jié)構(gòu)體變量進(jìn)行操作,包括不能創(chuàng)建一個(gè)結(jié)構(gòu)體變量!

這樣就很好地體現(xiàn)了程序的封裝性,也提高了程序的安全性。但是就需要我們寫(xiě)很多操作函數(shù)啦,包括創(chuàng)建結(jié)構(gòu)體指針變量分配空間的函數(shù)。

我們也可以在.h文件中用typedef聲明一個(gè)結(jié)構(gòu)體的指針類(lèi)型,如  typedef struct sut * pStu;

關(guān)于“如何用C語(yǔ)言隱藏結(jié)構(gòu)體”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“如何用C語(yǔ)言隱藏結(jié)構(gòu)體”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標(biāo)題名稱:如何用C語(yǔ)言隱藏結(jié)構(gòu)體
網(wǎng)址分享:http://www.2m8n56k.cn/article34/jhgcpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)網(wǎng)站改版微信小程序關(guān)鍵詞優(yōu)化虛擬主機(jī)云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
主站蜘蛛池模板: 国产亚洲精品免费 | 91网站在线免费观看 | 黄 色 成 年人网站 黄 色 免费网 站 成 人 | 久久精品a一国产成人免费网站 | 成人欧美视频免费看黄黄 | 日本一级爽毛片在线看 | 精品久久久中文字幕二区 | 国产成人精品999在线观看 | 农村寡妇一级毛片免费播放 | 成人亚洲国产精品久久 | 日韩中文字幕在线看 | 免费a级毛片视频 | 成人精品在线观看 | 国产一区二区在线 |播放 | 国产亚洲精品看片在线观看 | 99久久精品无码一区二区毛片 | 99精品在线观看 | 玖玖精品在线视频 | 亚洲性视频在线 | 久久成人免费播放网站 | 亚洲国产资源 | 亚洲精品免费观看 | 精品 日韩 国产 欧美在线观看 | 成人国产一区二区三区精品 | 亚洲天堂影院在线观看 | 美国的毛片免费的 | 99爱免费观看视频在线 | 欧美一级乱理片免费观看 | www.操操| 欧美激情视频一区二区免费 | 亚洲精品一区二区在线观看 | 国产三级精品三级国产 | 久久在线免费 | 免费看一级欧美毛片 | 国产一级毛片免 | 99久久国产综合精品成人影院 | 怡红院亚洲红怡院天堂麻豆 | 日韩日韩日韩手机看片自拍 | 亚洲精品一区二区久久 | 成人免费观看永久24小时 | 亚洲人成综合网站在线 |