国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學(xué)習(xí)c++的第九天

這篇具有很好參考價值的文章主要介紹了學(xué)習(xí)c++的第九天。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

結(jié)構(gòu)體

定義與訪問結(jié)構(gòu)

結(jié)構(gòu)作為函數(shù)參數(shù)

指向結(jié)構(gòu)的指針

typedef 關(guān)鍵字

示例 1:為結(jié)構(gòu)體創(chuàng)建類型別名

示例 2:為函數(shù)指針創(chuàng)建類型別名


結(jié)構(gòu)體

定義與訪問結(jié)構(gòu)

在C++中,結(jié)構(gòu)體(structure)是一種用戶自定義的數(shù)據(jù)類型,用于組合不同類型的數(shù)據(jù)成員。結(jié)構(gòu)體可以包含變量、函數(shù)和其他數(shù)據(jù)類型。

要定義一個結(jié)構(gòu)體,在C++中使用struct關(guān)鍵字,然后指定結(jié)構(gòu)體的名稱和成員變量。結(jié)構(gòu)體的定義位于大括號{}內(nèi)部,每個成員變量都由其類型和名稱組成,并用分號;分隔。

struct 語句的格式如下:

struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;
  • type_name是為結(jié)構(gòu)體定義的名稱,它可以自定義,但建議遵循C++命名約定,例如使用駝峰式命名法。類似于變量名或函數(shù)名,結(jié)構(gòu)體名稱也需要唯一。
  • 在結(jié)構(gòu)體定義的末尾,可以選擇性地指定一個或多個結(jié)構(gòu)體變量。這些變量將使用結(jié)構(gòu)體類型中定義的成員變量分配內(nèi)存空間。結(jié)構(gòu)體變量的定義方式與其他變量的定義方式相同。
  • 結(jié)構(gòu)體成員變量可以是任何有效的數(shù)據(jù)類型,包括基本類型(如int、float等)、自定義類型(如字符串、數(shù)組等)和其他結(jié)構(gòu)體類型。結(jié)構(gòu)體成員變量之間用逗號分隔。
  • 結(jié)構(gòu)體成員變量的訪問方式是使用點運算符? “.”,例如:object.member_name。其中,object是結(jié)構(gòu)體變量的名稱,member_name是結(jié)構(gòu)體成員變量的名稱。
  • 結(jié)構(gòu)體變量的初始化方式與其他變量的初始化方式相同,可以使用賦值運算符或花括號語法。

下面是一個示例,演示如何定義一個名為Person的結(jié)構(gòu)體,并創(chuàng)建兩個Person結(jié)構(gòu)體變量:

#include <iostream>
#include <string>

// 定義結(jié)構(gòu)體
struct Person {
    std::string name;
    int age;
    double height;
} person1, person2; // 創(chuàng)建兩個Person結(jié)構(gòu)體變量

int main() {
    // 初始化person1結(jié)構(gòu)體變量
    person1.name = "Alice";
    person1.age = 25;
    person1.height = 1.65;

    // 初始化person2結(jié)構(gòu)體變量
    person2.name = "Bob";
    person2.age = 30;
    person2.height = 1.8;

    // 訪問結(jié)構(gòu)體成員
    std::cout << "Name: " << person1.name << std::endl;
    std::cout << "Age: " << person1.age << std::endl;
    std::cout << "Height: " << person1.height << " meters" << std::endl;

    std::cout << "Name: " << person2.name << std::endl;
    std::cout << "Age: " << person2.age << std::endl;
    std::cout << "Height: " << person2.height << " meters" << std::endl;

    return 0;
}

在上述代碼中,我們使用struct關(guān)鍵字定義了一個名為Person的結(jié)構(gòu)體,并在大括號內(nèi)部定義了三個成員變量:name、age和height。然后,在結(jié)構(gòu)體定義的末尾,我們定義了兩個Person結(jié)構(gòu)體變量:person1和person2。

在main函數(shù)中,我們初始化了這兩個結(jié)構(gòu)體變量,并使用點運算符.訪問它們的成員變量。最后,我們使用std::cout語句打印結(jié)構(gòu)體中的成員變量值。

結(jié)構(gòu)作為函數(shù)參數(shù)

在C++中,可以將結(jié)構(gòu)作為函數(shù)的參數(shù)傳遞。這意味著我們可以將結(jié)構(gòu)體變量作為參數(shù)傳遞給函數(shù),以便在函數(shù)中訪問和操作結(jié)構(gòu)體成員變量。

結(jié)構(gòu)體可以作為函數(shù)參數(shù)傳遞,有兩種傳遞方式:

  • 傳值方式:將整個結(jié)構(gòu)體作為參數(shù)傳遞給函數(shù),這將復(fù)制整個結(jié)構(gòu)體,并將副本傳遞給函數(shù)。在函數(shù)中對結(jié)構(gòu)體成員變量的更改不會影響原始結(jié)構(gòu)體。
  • 引用方式:將結(jié)構(gòu)體作為引用參數(shù)傳遞給函數(shù),這將允許函數(shù)直接訪問原始結(jié)構(gòu)體。在函數(shù)中對結(jié)構(gòu)體成員變量的更改將直接反映在原始結(jié)構(gòu)體上。

下面是一個示例程序,演示如何將結(jié)構(gòu)體作為函數(shù)參數(shù)傳遞:

#include <iostream>
#include <string>

// 定義結(jié)構(gòu)體
struct Person {
    std::string name;
    int age;
    double height;
};

// 函數(shù)聲明
void printPerson(Person p); // 傳值方式
void updatePerson(Person& p, std::string newName, int newAge, double newHeight); // 引用方式

int main() {
    // 創(chuàng)建一個Person結(jié)構(gòu)體變量
    Person person;
    person.name = "Alice";
    person.age = 25;
    person.height = 1.65;

    // 傳值方式調(diào)用函數(shù)
    printPerson(person);

    // 引用方式調(diào)用函數(shù)
    updatePerson(person, "Bob", 30, 1.8);
    printPerson(person);

    return 0;
}

// 函數(shù)定義 - 傳值方式
void printPerson(Person p) {
    std::cout << "Name: " << p.name << std::endl;
    std::cout << "Age: " << p.age << std::endl;
    std::cout << "Height: " << p.height << " meters" << std::endl;
}

// 函數(shù)定義 - 引用方式
void updatePerson(Person& p, std::string newName, int newAge, double newHeight) {
    p.name = newName;
    p.age = newAge;
    p.height = newHeight;
}

在上面的示例程序中,我們定義了一個名為Person的結(jié)構(gòu)體,并創(chuàng)建了一個名為person的結(jié)構(gòu)體變量。然后,我們調(diào)用了兩個函數(shù)printPerson和updatePerson,并將person作為參數(shù)傳遞給這些函數(shù)。

printPerson函數(shù)采用傳值方式將結(jié)構(gòu)體作為參數(shù)傳遞,而updatePerson函數(shù)采用引用方式將結(jié)構(gòu)體作為參數(shù)傳遞。

在printPerson函數(shù)中,我們使用點運算符"."訪問結(jié)構(gòu)體成員變量,并打印它們的值。

在updatePerson函數(shù)中,我們使用引用參數(shù)修改了結(jié)構(gòu)體成員變量的值。由于p是指向person結(jié)構(gòu)體的引用,因此對p的更改將直接反映在person結(jié)構(gòu)體上。

最后,我們再次調(diào)用printPerson函數(shù),并打印已更新的結(jié)構(gòu)體成員變量的值。

指向結(jié)構(gòu)的指針

在C++中,可以使用指針來引用和操作結(jié)構(gòu)體。指向結(jié)構(gòu)的指針指向結(jié)構(gòu)體變量的內(nèi)存地址,允許我們通過解引用操作符(*)來訪問和修改結(jié)構(gòu)體成員變量。

以下是一個示例演示如何聲明和使用指向結(jié)構(gòu)的指針:

#include <iostream>
#include <string>

// 定義結(jié)構(gòu)體
struct Person {
    std::string name;
    int age;
    double height;
};

int main() {
    // 創(chuàng)建一個Person結(jié)構(gòu)體變量
    Person person;
    person.name = "Alice";
    person.age = 25;
    person.height = 1.65;

    // 創(chuàng)建指向Person結(jié)構(gòu)體的指針,并將其指向person變量
    Person* ptr = &person;

    // 通過指針訪問結(jié)構(gòu)體成員變量
    std::cout << "Name: " << ptr->name << std::endl;
    std::cout << "Age: " << ptr->age << std::endl;
    std::cout << "Height: " << ptr->height << " meters" << std::endl;

    // 修改結(jié)構(gòu)體成員變量
    ptr->name = "Bob";
    ptr->age = 30;
    ptr->height = 1.8;

    // 通過原始結(jié)構(gòu)體變量訪問已修改的成員變量
    std::cout << "Name: " << person.name << std::endl;
    std::cout << "Age: " << person.age << std::endl;
    std::cout << "Height: " << person.height << " meters" << std::endl;

    return 0;
}

在上述示例中,我們定義了一個名為Person的結(jié)構(gòu)體,并創(chuàng)建了一個名為person的結(jié)構(gòu)體變量。

然后,我們聲明了一個指向Person結(jié)構(gòu)體的指針ptr,并使用取地址運算符(&)將其指向person變量的內(nèi)存地址。

通過指針訪問結(jié)構(gòu)體成員變量時,我們使用箭頭運算符(->),它結(jié)合了解引用操作符(*)和點運算符(.)。例如,ptr->name等效于(*ptr).name,允許我們訪問ptr所指向的結(jié)構(gòu)體的成員變量。

我們還可以通過指針對結(jié)構(gòu)體成員變量進行修改。例如,ptr->name = "Bob"將修改person的name成員變量的值。

最后,我們通過原始結(jié)構(gòu)體變量訪問已修改的成員變量,并打印它們的值。

請注意,當(dāng)使用指向結(jié)構(gòu)的指針時,需要確保指針指向有效的結(jié)構(gòu)體對象。否則,解引用指針可能會導(dǎo)致未定義的行為或錯誤。

typedef 關(guān)鍵字

typedef是C和C++中的關(guān)鍵字,用于為已存在的類型創(chuàng)建一個新的類型別名。通過typedef,您可以為已有類型指定一個新的名稱,從而增強代碼的可讀性和可維護性。

typedef的語法如下:

typedef existing_type new_type;

其中,existing_type是已存在的類型,而new_type是您為該類型定義的新的類型別名。

下面是一些使用typedef的例子:

typedef int myInt; // 為int類型創(chuàng)建一個新的類型別名為myInt

typedef unsigned int uint; // 為unsigned int類型創(chuàng)建一個新的類型別名為uint

typedef float distance; // 為float類型創(chuàng)建一個新的類型別名為distance

typedef int* IntPtr; // 為int*類型(指向int的指針)創(chuàng)建一個新的類型別名為IntPtr

typedef void (*FuncPtr)(int); // 為函數(shù)指針類型創(chuàng)建一個新的類型別名為FuncPtr

在上述示例中,我們使用typedef關(guān)鍵字為不同的類型創(chuàng)建了新的類型別名。這些類型別名可以像普通類型一樣使用,提供了更具描述性的名稱,使得代碼更易于理解和維護。

例如,在第一個例子中,我們?yōu)閕nt類型創(chuàng)建了一個新的類型別名myInt。現(xiàn)在,我們可以使用myInt關(guān)鍵字來聲明變量,就像使用int一樣:

myInt num = 10;

同樣,其他的類型別名也可以按照這種方式使用。

需要注意的是,typedef只是為已存在的類型創(chuàng)建了一個新的名稱,它并沒有創(chuàng)建新的類型。因此,typedef并不會引入新的數(shù)據(jù)類型,只是給現(xiàn)有的類型起了一個別名。

示例 1:為結(jié)構(gòu)體創(chuàng)建類型別名
#include <iostream>

// 定義一個結(jié)構(gòu)體
struct Person {
    std::string name;
    int age;
};

// 為結(jié)構(gòu)體創(chuàng)建類型別名
typedef struct Person PersonStruct;

int main() {
    // 使用類型別名創(chuàng)建結(jié)構(gòu)體變量
    PersonStruct person;
    person.name = "John";
    person.age = 25;

    // 輸出結(jié)構(gòu)體成員
    std::cout << "Name: " << person.name << std::endl;
    std::cout << "Age: " << person.age << std::endl;

    return 0;
}

在上述示例中,我們定義了一個名為Person的結(jié)構(gòu)體。然后,使用typedef關(guān)鍵字為該結(jié)構(gòu)體創(chuàng)建了一個新的類型別名PersonStruct。接著,在main函數(shù)中,我們使用PersonStruct類型別名來聲明了一個結(jié)構(gòu)體變量person,并對其進行賦值和輸出。

示例 2:為函數(shù)指針創(chuàng)建類型別名
#include <iostream>

// 原始的函數(shù)原型
void myFunction(int x);

// 為函數(shù)指針創(chuàng)建類型別名
typedef void (*FuncPtr)(int);

int main() {
    // 使用類型別名聲明函數(shù)指針變量
    FuncPtr ptr = &myFunction;

    // 調(diào)用函數(shù)通過指針
    ptr(5);

    return 0;
}

// 實現(xiàn)函數(shù)
void myFunction(int x) {
    std::cout << "The value is: " << x << std::endl;
}

在上述示例中,我們首先定義了一個函數(shù)myFunction,它接受一個整數(shù)參數(shù)并沒有返回值。然后,使用typedef關(guān)鍵字為該函數(shù)指針類型創(chuàng)建了一個新的類型別名FuncPtr。在main函數(shù)中,我們使用FuncPtr類型別名來聲明了一個函數(shù)指針變量ptr,并將其指向myFunction函數(shù)。最后,通過函數(shù)指針調(diào)用了myFunction函數(shù)。

這些示例展示了typedef的使用,以便為已存在的類型創(chuàng)建新的類型別名。文章來源地址http://www.zghlxwxcb.cn/news/detail-742894.html

到了這里,關(guān)于學(xué)習(xí)c++的第九天的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 學(xué)習(xí)c++的第二天

    學(xué)習(xí)c++的第二天

    目錄 數(shù)據(jù)類型 基本數(shù)據(jù)類型 typedef 聲明 枚舉類型 類型轉(zhuǎn)換 變量類型 變量定義 變量聲明 左值(Lvalues)和右值(Rvalues) 變量作用域 C++ 為程序員提供了種類豐富的內(nèi)置數(shù)據(jù)類型和用戶自定義的數(shù)據(jù)類型。下表列出了七種基本的 C++ 數(shù)據(jù)類型: 類型 布爾型 bool 字符型

    2024年02月06日
    瀏覽(30)
  • 學(xué)習(xí)c++的第四天

    目錄 運算符 算術(shù)運算符 關(guān)系運算符 邏輯運算符 位運算符 賦值運算符 雜項運算符 運算符優(yōu)先級 算術(shù)運算符是 C++ 中用于執(zhí)行基本算術(shù)操作的運算符。 加法運算符 (+):將兩個操作數(shù)相加。例如,A + B 將得到 30,因為 10 + 20 等于 30。 減法運算符 (-):從第一個操作數(shù)中減去第

    2024年02月06日
    瀏覽(16)
  • 學(xué)習(xí)C語言的第一天

    學(xué)習(xí)C語言的第一天

    使用工具:visual studio 2010 搭建過程:新建項目、配置設(shè)置(主要是解決運行后一閃而過的問題) ? 如何輸出各種數(shù)據(jù)類型? ?學(xué)習(xí)字節(jié)以及一些常用基本單位: ?搞懂十進制和二進制如何計算? ?從以上內(nèi)容,我們可以得出:如果我使用的是int類型,那么將有32個bit,也就是

    2023年04月18日
    瀏覽(31)
  • 小白學(xué)習(xí)c++的的第一節(jié)課

    小白學(xué)習(xí)c++的的第一節(jié)課

    經(jīng)過了很長時間對C語言和c的數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí),終于開始學(xué)C++了。前面基礎(chǔ)不牢,后面地動山搖,給自己加油。 該如何去學(xué)習(xí)c++? 多寫博客。寫博客,主要是總結(jié)自己學(xué)習(xí)的知識,更系統(tǒng)更全面對所學(xué)的知識進行概況,也能起到復(fù)習(xí)的作用。 有時間的話多看看課外書 c++的學(xué)習(xí)不

    2024年02月08日
    瀏覽(28)
  • c++類開發(fā)的第三篇(講明白友元函數(shù)和this指針)

    c++類開發(fā)的第三篇(講明白友元函數(shù)和this指針)

    c++實現(xiàn)了 封裝 , 數(shù)據(jù) 和 處理數(shù)據(jù)的操作(函數(shù)) 是分開存儲的。 c++中的 非靜態(tài)數(shù)據(jù)成員 直接內(nèi)含在類對象中,就像c語言的struct一樣。 成員函數(shù)并不會出現(xiàn)在對象中,而是作為類的一部分存儲在代碼段中,需要通過對象或?qū)ο笾羔樳M行調(diào)用。成員函數(shù)可以訪問類的所有成員

    2024年02月21日
    瀏覽(25)
  • NRCE 二級C語言開發(fā)環(huán)境:Microsoft Visual C++ 2010 學(xué)習(xí)版下載

    NRCE 二級C語言開發(fā)環(huán)境:Microsoft Visual C++ 2010 學(xué)習(xí)版下載

    Microsoft Visual C++ 2010 學(xué)習(xí)版 2022版考綱 網(wǎng)盤鏈接:點擊下載 提取碼:siyy 網(wǎng)盤地址下載太慢可以到:官網(wǎng)下載 下載完成后,是一個iso鏡像文件,點擊上方裝載。 裝載完成后,可以看到計算機處有個無窮圖標(biāo)的DVD驅(qū)動器 現(xiàn)在就可以去到你安裝磁盤目錄下的IDE目錄(星號中間的

    2024年02月11日
    瀏覽(26)
  • C++類開發(fā)的第六篇(虛擬繼承實現(xiàn)原理和cl命令的使用的bug修復(fù))

    C++類開發(fā)的第六篇(虛擬繼承實現(xiàn)原理和cl命令的使用的bug修復(fù))

    接上一篇末尾虛擬繼承的簡單介紹之后,這篇來詳細(xì)講一下這個內(nèi)存大小是怎么分配的。 cl 是 Microsoft Visual Studio 中的 C/C++ 編譯器命令。通過在命令行中鍵入 cl 命令,可以調(diào)用 Visual Studio 的編譯器進行編譯操作。 cl 命令提供了各種選項和參數(shù),用于指定源文件、編譯選項、

    2024年03月09日
    瀏覽(23)
  • 秒懂百科,C++如此簡單丨第十九天:動態(tài)規(guī)劃

    秒懂百科,C++如此簡單丨第十九天:動態(tài)規(guī)劃

    目錄 動態(tài)規(guī)劃的初步理解 求最短路徑數(shù) 洛谷 P1002 過河卒? 題目描述 輸入樣例 輸出樣例? 思路 AC Code The greatest glory in living lies not in never falling, but in rising every time we fall. 生命中最大的榮耀不在于從未跌倒,而在于每次跌倒后都能重新站起來。 什么是動態(tài)規(guī)劃?最直白的理解

    2024年02月19日
    瀏覽(20)
  • Go學(xué)習(xí)第九天

    使用sqlite3

    2024年02月12日
    瀏覽(13)
  • 學(xué)習(xí)JAVA打卡第四十九天

    學(xué)習(xí)JAVA打卡第四十九天

    Random類 盡管可以使用math類調(diào)用static方法random()返回一個0~1之間的隨機數(shù)。(包括0.0但不包括0.1),即隨機數(shù)的取值范圍是[0.0,1.0]的左閉右開區(qū)間。 例如,下列代碼得到1~100之間的隨機數(shù)(包括1和100) ?使用Random類的如下構(gòu)造方法: ?創(chuàng)建random對象,其中第一個構(gòu)造方法

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包