亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

趣味 C++ 進階

難度初級
時長 8小時 0分
學習人數
綜合評分9.60
10人評價 查看評價
10.0 內容實用
8.8 簡潔易懂
10.0 邏輯清晰
    • malloc函數是C語言中用于動態內存分配的標準庫函數.

    • 在使用malloc函數之前,需要包含stdlib.h頭文件,以獲得該函數的聲明

    • 調用malloc函數時,需要指定要分配的內存大小,參數為size_t類型,表示要分配的字節數。例如 malloc(2*sizeof(int))

    查看全部
  • 0x0102轉化成0x0110

    0001 0010

    小端字節序 little endian (低地址)0010 0001 (高地址)? 大部分機器(電腦)

    大端字節序 big endian (低地址)0001 0010 (高地址) IO方面(網絡細節序)

    查看全部
  • https://img1.sycdn.imooc.com/679115be09cf4c7b03550157.jpg

    &(與運算)參加運算的兩個數據,按二進制位進行與運算。如果兩個相應的二進制位都為1,則該位的結果值為1,否則為0。

    |(或運算)兩個相應的二進制位中只要有一個為1,該位的結果值為1。

    ^(異或)若參加運算的兩個二進制位值相同則為0,否則為1。

    ~(取反)這是一元運算符,用于求整數的二進制反碼,即分別將操作數各二進制位上的 1 變為 0,0 變為 1。

    <<(左移)各位全部左移若干位,高位丟棄,低位補 0 。

    >>(右移)各二進位全部右移若干位,對無符號數,高位補 0 ,有符號數,各編譯器處理方法不一樣,有的補符號位,有的補 0 。

    查看全部
  • 通常第一位為符號位,0代表正,1代表負

    7

    0111

    1111 原碼 (帶符號位)

    1000 反碼(除符號位取反)

    1001 補碼 (反碼+1,為負數(-7))

    查看全部
  • 防止內存泄露,用父類引用的時候,銷毀對象防止無法調用到子類析構函數
    查看全部
    0 采集 收起 來源:強者爭霸

    2024-06-28

  • 所以,只要你的編譯器兼容 C++11 標準,那么你應該使用 nullptr。

    查看全部
    0 采集 收起 來源:C++ 中的空指針

    2024-03-24


  • 將父類的析構函數聲明為虛函數,作用是用父類的指針刪除一個派生類對象時,派生類對象的析構函數會被調用。

    此時如果析構函數不加 virtual,那么 delete 父類指針的時候,子類的析構就不會被調用,某些情況下會導致內存泄漏。

    查看全部
    0 采集 收起 來源:強者爭霸

    2024-03-23

  • 我們之前講述了什么是多態,還用了一個例子,將一個指針的類型做成強轉,然后調用 func 函數,就會發現, func 函數會隨著被強轉的類型的變換而變換,這種函數的關聯過程稱為編聯。按照聯編所進行的階段不同,可分為兩種不同的聯編方法:靜態聯編和動態聯編。

    查看全部
  • 我們其實可以把一個員工強行轉化成程序員,但是這就有可能出問題,就如同我們把 long long 轉成 int 就有可能出現問題。

    int main(int argc,char **argv)
    {
    ? ?Coder * coder = new Coder();

    ? ?Staff * staff = coder; // 隱式轉換就可以
    ? ?Coder * coder = (Coder *)staff; // 必須顯式轉換

    ? ?return 0;
    }

    查看全部
  • 我們之前已經講過,可以為成員變量和成員函數設置權限修飾符來設置權限。但是這在繼承的時候就會產生一個問題:子類中是否要保持對父類成員的權限,而 C++ 將這個選擇權交給了程序員。

    在 C++ 中,對父類成員的權限,子類中可以進行重新的定義,這個定義就是通過繼承時候寫的public 來實現的。

    可以看到,我們在上述程序中使用了 public 修飾符,那么父類中的成員函數和成員變量將會保持父類的權限。這種是使用最廣泛的繼承方式,我們把它叫做公有繼承。

    查看全部
  • private

    用來指定私有成員。一個類的私有成員,不論是成員變量還是成員函數,都只能在該類的內部才能被訪問

    int main(int argc,char **argv)
    {
    ? ?A a;
    ? ?a.a = 15; // 會報錯,因為成員變量是 private 的
    ? ?return 0;
    }

    public

    用來指定公有成員。一個類的公有成員在任何地方都可以被訪問。

    int main(int argc,char **argv)
    {
    ? ?A a;
    ? ?a.a = 15; // 不會報錯,因為成員變量是 public 的
    ? ?return 0;
    }

    protected

    用來指定保護成員。一般是允許在子類中訪問

    查看全部
  • 要將對象分配到堆上,需要用到另外兩個關鍵字,new 和 delete。new 用來分配對象,delete 用來刪除對象。new 會返回一個指針,在使用完畢后,要通過 delete 把這個指針指向的地址釋放掉。

    #include "Staff.h"

    int main(int argc,char **argv)
    {
    ? ?// 我們就這樣實例化了三個員工
    ? ?Staff * st1 = new Staff();
    ? ?Staff * st2 = new Staff();
    ? ?Staff * st3 = new Staff();

    ? ?// 記得釋放
    ? ?delete st1;
    ? ?delete st2;
    ? ?delete st3;

    ? ?return 0;
    }

    查看全部
  • 但是我們需要思考的是,什么情況下我們要返回一個指針,返回指針的時候需要我們注意些什么?

    通常情況下,我們是希望為函數外提供一片內存,例如,我們可以給函數外面提供一個數組。

    int * func()
    {
    ? ?int arr[] = {1, 2, 3, 4};
    ? ?return arr;
    }

    但是這樣寫得話,程序會崩潰掉。原因是,arr 數組是一個局部變量,在 func 結束之后,其內存就被銷毀掉了。此時在函數外面對其進行操作,自然會出問題。所以,要完成這類操作,我們需要把內存分配到堆內存上面。

    int * func()
    {
    ? ?int * arr = (int *)malloc(4 * sizeof(int));
    ? ?return arr;
    }

    這樣就沒有問題了,當然,既然是分配在了堆內存上,就要記得手動銷毀。

    int main(int argc,char **argv)
    {
    ? ?int * p = func();
    ? ?free(p);
    ? ?return 0;
    }

    查看全部
  • 字節序,就是 大于一個字節類型的數據在內存中的存放順序。

    計算機硬件有兩種儲存數據的方式:大端字節序(big endian)和小端字節序(little endian)。

    我們現在有一個整數是258。用16進制表示是0x0102,然后我們把這個整數拆分成兩個字節,第一個字節為 0000 0001,第二個字節為 0000 0010。

    如果在一個使用大端字節序的電腦上,這個整數會被這樣存放:

    如果一個使用小端字節序的電腦上,這個整數的高字節就會存放在高地址上:

    現在大部分的機器,都采用了小端字節序。但是在 IO 方面,則大部分使用大端字節序。例如,你要使用網絡發送一個 int 類型的變量,要先把 int 轉換成大端字節序,然后通過網絡發送。

    大端字節序又被稱之為網絡細節序。

    查看全部
  • << 左移

    各位全部左移若干位,高位丟棄,低位補 0 。

    >> 右移

    各二進位全部右移若干位,對無符號數,高位補 0 ,有符號數,各編譯器處理方法不一樣,有的補符號位,有的補 0 。

    查看全部
  • std::string 是 C++ 中用來存放字符串的類型
    查看全部
  • #include <stdio.h>

    #include <stdlib.h>

    #include <iostream>




    int main(int? argc,char ** argv)

    {

    ? ? char source[20]={'a'};

    ? ? char* originP= source;

    ? ? *(originP+15)='c';

    ? ? *(originP+16)='d';

    ? ? *(originP+17)='e';

    ? ? *(originP+18)='f';

    ? ? *(originP+19)='g';

    ? ??

    ? ? char target[5]={'b','b','b','b','b'};

    ? ??

    ? ? char* targetP=target;

    ? ? ?std::cout <<"origin value:"<<? target[1] <<','<<target[1] <<std::endl;

    ? ??

    ? ? memcpy(targetP,originP+15,5);

    ? ? std::cout << "new value:"<<target[0] << ","<< target[1] <<std::endl;

    ? ? return 0;

    }

    查看全部
    0 采集 收起 來源:強者爭霸

    2023-12-14

  • #include?<iostream>
    #include?<stdio.h>
    using?namespace?std;
    
    int?main()
    {
    ????int?a;
    ????cin>>a;
    ????cout<<a;
    
    
    
    ????return?0;
    }
    查看全部
  • 將指針指向數組,不需要使用取址符&,并且表示的是指針執行數組第一個元素的地址:

    int * p = arr 與 int * p = &arr[0]是相同的操作。

    指針的加減法:

    1. 想要讓指針p指向第二個元素,只需要p+1就可以了。?

    注意:p+1的操作實際上是指針存放的地址+指針類型的大小。如果指針是一個int*的類型,則p+1就是向后移動4個字節的位置,如果是char*的類型,p+1則是向后移動2個字節的位置。

    2. 指針支持p++、p--的操作

    指針除了可以指向數組外,還可以指向一個結構體。

    查看全部
  • 計算機中小數表示方法:

    定點數容易造成空間浪費,

    使用浮動的小數點:


    ?浮點數按照 IEEE754標準存放的,符號位1位,指數8位,尾數23位:


    浮點數存在精度問題,當場景中對精度要求較高,則不能使用浮點數存儲。

    查看全部
首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
你需要具備基礎的 C++ 語法知識,在學習本課程之前,建議先學習《趣味 C++ 入門》,快速認識 C++,熟悉 C++ 基本語法,更加快速入手進階課程!
老師告訴你能學到什么?
在本門課程中,你將學習到:計算機存儲數據的原理、指針的進階、面向對象編程、內存管理技巧等 C++ 高級語法。在課程的最后,將帶領大家使用 C++ 編寫一個五子棋游戲,通過實踐,加深理解,鞏固學習成果。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!