日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C和C++结构体区别

發(fā)布時(shí)間:2025/3/15 c/c++ 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C和C++结构体区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C和C++結(jié)構(gòu)體的區(qū)別

  • C的結(jié)構(gòu)體內(nèi)不允許有函數(shù)存在,C++允許有內(nèi)部成員函數(shù),且允許該函數(shù)是虛函數(shù)。所以C的結(jié)構(gòu)體是沒有構(gòu)造函數(shù)、析構(gòu)函數(shù)、和this指針的。
  • C的結(jié)構(gòu)體對(duì)內(nèi)部成員變量的訪問權(quán)限只能是public,而C++允許public,protected,private三種。
  • C語(yǔ)言的結(jié)構(gòu)體是不可以繼承的,C++的結(jié)構(gòu)體是可以從其他的結(jié)構(gòu)體或者類繼承過來的。
  • 在C中定義一個(gè)結(jié)構(gòu)體類型要用typedef,如下:

    typedef struct Complex{

      int read;

      int image;

    }Complex;

    那么,在說明Complex變量的時(shí)候可以這樣寫

    Complex complex;

    但是如果沒有typedef就必須用

    struct Complex complex;

    來聲明。這里的Complex實(shí)際上就是struct Complex的別名。另外這里也可以不寫Complex(于是也不能struct Complex complex;了)

    typedef struct{

      int read;

      int image;

    }Complex;

    但在c++里很簡(jiǎn)單,直接

    struct Complex{

      int read;

      int image;

    };

    于是就定義了結(jié)構(gòu)體類型Complex,聲明變量時(shí)直接Complex complex;

  • 在c++中如果用typedef的話,又會(huì)造成區(qū)別:

    ?

    struct Complex1{

      int read;

      int image;

    }complex;//complex是一個(gè)變量

    ?

    typedef?? struct?? Complex2{

      int read;

      int image;

    }Complex2;//Complex是一個(gè)結(jié)構(gòu)體類型

    使用時(shí)可以直接訪問complex.read,但是Complex2則必須先Complex2 complex2;然后complex2.read = 1;

  • 二、. 和-> 區(qū)別

    定義結(jié)構(gòu)體指針,訪問成員時(shí)就用->
    定義結(jié)構(gòu)體變量,訪問成員時(shí)就用.

    例如:
    struct A {
    int a;
    char b;
    };

    struct A q; 訪問成員就用:q.a;
    struct A *p; 訪問成員就用:p->a;

    參考自:https://blog.csdn.net/mengxiangjia_linxi/article/details/70308544

    總結(jié)

    以上是生活随笔為你收集整理的C和C++结构体区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。