C C 語言結構體中定義另乙個結構體指標的經驗

2021-08-03 14:30:48 字數 1440 閱讀 1340

本文進行討論的是,在linux中,c/c++語言的結構體的使用情況。一般情況下,結構體的使用還是相對比較簡單的,它攜帶的一類物體的某一些屬性,

比如[cpp]view plain

copy

struct

person  

;  

這個結構一攜帶的就是乙個人的兩個基本資訊,年齡(age)和身高(height),同樣你也可以繼續新增人的相關資訊進去,比如學號,班級等。

但是今天討論的是在結構體中定義乙個結構體指標的問題,當然這也可以延伸到結構體定義乙個普通型別的指標方面,讀者可以自行進行驗證或者思考,本文

不作討論。

[cpp]view plain

copy

typedef

struct

tagstudent_t  

student_t;  

typedef

struct

tagschool_t  

school_t;  

上述的兩個結構體表示的含義是:

第乙個: 學生的個人資訊

第二個:學校的情況(包含了學生的資訊和學校的排名)

接下來,如果要對statuend_t的結構體的變數進行設定,那麼有兩種方法,第乙個直接使用student_t定義的變數進行賦值,第二個就是使用school_t進行間接賦值,

今天就是討論第二種的方法。

首先,在乙個程式執行過程中,實際上是記憶體指標在操作,因此我們定義school_t的指標*school,具體的操作如下程式

#include #include 

#include

#include

typedef

struct

tagstudent_t

student_t;

typedef

struct

tagschool_t

school_t;

int main(int argc,char

const *argv)

else

}

/*這兩個的free順序最好不要調轉,因為如果先free掉school的話,相當於將student得本體free了,相當於乙個野指標

*/free(school->student);

free

(school);

}

如果你不想使用這種方式,大可直接使用變數,不是指標類的變數,如school_t school。同樣school_t結構體重使用的也是乙個普通的變數,即student_t student,這樣,

你就不需要進行記憶體指標的操作。但是本人建議還是使用指標來進行,效率相對而言會更快一點。可以參考一些

(注:上述的編譯只在ubuntu下的linux系統操作,其他的win,vs等沒有進行測試)

C C 語言結構體中定義另乙個結構體指標的經驗

本文進行討論的是,在linux中,c c 語言的結構體的使用情況。一般情況下,結構體的使用還是相對比較簡單的,它攜帶的一類物體的某一些屬性,比如struct person 這個結構一攜帶的就是乙個人的兩個基本資訊,年齡 age 和身高 height 同樣你也可以繼續新增人的相關資訊進去,比如學號,班...

C C 語言結構體中定義另乙個結構體指標的經驗

本文進行討論的是,在linux中,c c 語言的結構體的使用情況。一般情況下,結構體的使用還是相對比較簡單的,它攜帶的一類物體的某一些屬性,比如struct person 這個結構一攜帶的就是乙個人的兩個基本資訊,年齡 age 和身高 height 同樣你也可以繼續新增人的相關資訊進去,比如學號,班...

MySQL複製表結構和內容到另乙個表中

一 低版本的mysql不支援,mysql4.0.25 不支援,mysql5已經支援了 1 複製表結構到新錶 create table 新錶 like 舊表 2.複製舊表的資料到新錶 假設兩個表結構一樣 insert into 新錶 select from 舊表 3.複製舊表的資料到新錶 假設兩個表結...