當前位置:
首頁 > 最新 > C語言編程入門基礎結構體和指針

C語言編程入門基礎結構體和指針

C語言是面向過程的,而C++是面向對象的

C和C++的區別:

C是一個結構化語言,它的重點在於演算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」。

C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程序設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,「C加上好的設計」也能寫出非常好的東西。

指針也可以指向一個結構體變數。定義的一般形式為:

struct 結構體名 *變數名;

前面已經定義了一個結構體 stu:

struct stu{

char*name;

intnum;

charsex;

floatscore;

};

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多乾貨和技術資料分享!

下面定義一個指向 stu 的指針變數 pstu:

struct stu *pstu;

當然在定義結構體的同時也可以定義 pstu:

struct stu{

char*name;

intnum;

charsex;

floatscore;

}*pstu,stu1,stu2;

pstu 可以指向結構體變數:

pstu = &stu1;

pstu = &stu2;

應該把結構體變數的首地址賦給 pstu,而不能把結構體名賦給 pstu,而且結構體變數前面要加取地址符&。下面的寫法都是錯誤的:

pstu = &stu;

pstu = stu1;

結構體名和結構體變數是兩個不同的概念,不能混淆。結構體名只能表示一個結構形式,是一種數據類型,編譯器並不對它分配內存空間,就像 int、float 這些關鍵字本身不分配內存一樣。只有當一個變數被定義為這種數據類型時,才對該變數分配內存空間。所以上面 &stu 這種寫法是錯誤的,不可能去取一個結構體名的首地址。

另外,不要認為結構體和數組類似,數組名表示數組的首地址,而結構體變數不表示首地址,它表示的是結構體本身這塊內存空間的整體。就像int a;,a 不是首地址,而是表示它本身。

有了結構體指針,就可以獲取結構體成員了,一般形式為:

(*結構指針變數).成員名

或者:

結構指針變數->成員名

例如:

(*pstu).num

或者:

注意(*pstu)兩側的括弧不可少,因為成員符.的優先順序高於*。如去掉括弧寫作*pstu.num,那麼等效於*(pstu.num),這樣意義就完全不對了。

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多乾貨和技術資料分享!

【示例】結構體指針變數的使用。

#include

struct stu{

char*name;

intnum;

charsex;

floatscore;

}*pstu,stu1={"He fang",1,"F",92.5};

intmain(){

pstu=&stu1;

printf("Number=%d, Name=%s
",stu1.num,stu1.name);

printf("Sex=%c, Score=%f

",stu1.sex,stu1.score);

printf("Number=%d, Name=%s
",(*pstu).num,(*pstu).name);

printf("Sex=%c, Score=%f

",(*pstu).sex,(*pstu).score);

printf("Number=%d, Name=%s
",pstu->num,pstu->name);

printf("Sex=%c, Score=%f
",pstu->sex,pstu->score);

return0;

}

運行結果:

Number=1, Name=He fang

Sex=F, Score=92.500000

Number=1, Name=He fang

Sex=F, Score=92.500000

Number=1, Name=He fang

Sex=F, Score=92.500000

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |