(五十八)結構與指標

2021-07-08 14:11:45 字數 1065 閱讀 1263

在使用new來建立動態結構時,表示建立的新結構中的某個變數,和普通結構中某個變數的形式不同。例如:

#include#includeusing namespace std;

struct ab //定義乙個結構ab

;int main()

char*getname()

輸出:

隨便輸點什麼,別超過20個字元

abc你輸入的是: abc

將你輸入的字串複製到指標c的位置。

指標c所指向位址的值為abc

在主函式裡,把指標c的位址賦給指標a,指標a的值為abc

指標a的位址為00430658

隨便輸點什麼,別超過20個字元

def你輸入的是: def

將你輸入的字串複製到指標c的位置。

指標c所指向位址的值為def

在主函式裡,把指標c的位址賦給指標a,指標a的值為def

指標a的位址為00430698

請按任意鍵繼續. . .

①char*c = new c

har[strlen(b) + 1];這行**,可能為指標c兩次new到相同的記憶體位址,也可能new到不同的記憶體位址。

②因為指標a指向的位址為指標c所指向的位址,所以指標a指向的位址和指標c指向的位址是相同的;

而指標c相對於指標b來說,是new了乙個新位址,因此和指標b的位址是不同的;

指標b每次都new了乙個新位址,所以也可能是不同位址(但由於之前delete指標a),因此也可能是不同的;

③根據實際測試,delete a;和 delete a; 都能順利執行,但按之前來說,刪除字串指標應該是delete a; 才對。

⑤在函式getname

()之中,執行完函式之後,指標b和指標c因為是自動儲存,因此之後無法再次訪問指標b和c,但因為沒有被delete,所以其占用的記憶體位址還在。但是指標c和指標a指向的記憶體位址相同,delete了指標a,實際上也釋放了指標c所指向的記憶體位址,但是沒有釋放指標b所指向的記憶體位址。參照(五十九自動儲存),因此,指標b可能造成記憶體洩露

練習五十八 列表的練習

部分的python中list的練習例項 dir list add class contains delattr delitem dir doc eq format ge getattribute getitem gt hash iadd imul init init subclass iter le...

五十八課 類模板的概念和意義

上節課我們使用泛型程式設計的思想應用於函式模板,這節課我們就來學習下泛型程式設計的思想是否可以用類上面呢?c 中將模板的思想應用於類,使得類的實現不關注資料元素的具體型別,而之關注類所實現的具體功能。1 c 中的類模板 templateclass operator 2 類模板的應用 operator...

java學習之路 第五十八天

session 是一種cookie的一種會話,cookie是伺服器返回一小份資料給客戶端,並且存放在客戶端。session是資料存放在伺服器端的。什麼是session會話 瀏覽器訪問瀏覽器的時候,會在伺服器中開闢乙個儲存空間,單獨建立乙個session物件,每個物件都有乙個唯一的id,並將其id通過...