-----------------------------asp.net+unity開發、.net培訓、期待與您交流!-------------------------
一.結構體
1.什麼是結構體; 當
乙個整體
由多個資料構成時,我們可以用陣列來表示這個整體,但是陣列內部的每乙個元素都必須是相同型別的資料。在實際應用中,我們通常需要由不同型別的資料來構成乙個整體,比如學生這個整體可以由姓名、年齡、身高等資料構成,那麼我們就要用到結構體;
2.定義
struct 結構體名 ;
例如: struct student;
結構體實際上就行當於我們定義乙個變數型別;
3.結構體變數名
struct person;
struct person p; 先定義結構體型別,在定義變數名;
struct personp; 定義結構體同時定義變數;
structp; 省略結構體型別名,直接定義變數名。
4.結構體注意
結構體是可以包含結構體的;
定義結構體型別時候是沒有分配儲存空間的,就像int型別沒有儲存空間一樣,只有定義結構體變數時才會分配空間儲存;
結構體儲存方式是按成員名依次排列的;
結構體如果型別相同,那麼所佔空間為其成員型別之和;如果不相同,那麼為佔最大儲存空間的型別的倍數;
5.結構體初始化
struct person;
struct person p = ;定義變數的同時初始化;
6.結構體的使用
struct person;
struct person p ;
想訪問年齡 p.age = 17;
struct person;
struct person p = ;
struct person pp = p ; 同一型別的結構體中可以相互賦值;
二.結構體陣列
1.定義,和結構體一樣3種方式;
struct student;
struct student stu[10];
struct studentstup[10];
structstup[10];
2.初始化
struct student;
struct student stu[2] = ,};
三.結構體作為函式引數
將結構體變數作為函式引數進行傳遞時,其實傳遞的是全部成員的值,也就是將實參中成員的值一一賦值給對應的形參成員。因此,形參的改變不會影響到實參。
四.指標
1.定義
指標向的資料型別 * 指標變數名;
char *p; int *pp; float *ppp;
2.指標的賦值
int a = 10;
int *p ;
p = &a; 先定義,再賦值;
int a = 10;
int *p1 = &a; 定義的同時賦值;
3.改值
int a = 10;
int *p = &a;
*p = 5; 將a的值變為5 了;
指標一定要初始化,否則是乙個野指標,威害很大;
五.指標與陣列
1.指標與一位陣列
陣列是一塊連續的記憶體,陣列元素的下標就是該元素的位置相對與陣列起始位址的偏移量
因為第乙個元素的位址與陣列名位址是相同的,所以便宜量是0陣列就相當於乙個指標,陣列的變數名就是位址;
int num = ;
int *p = num;
遍歷陣列:
for (int i = 0;i < 3;i++)
p + i,將不會改變變數的位址;
p++ 將改變變數的位址;
2.陣列名和指標的區別
陣列的位址還是陣列的位址,指標的位址變數的位址不是指標變數裡存放的位址
陣列變數的指向不可以改變
指標變數就是就是用來存放位址變數,系統為其開闢了儲存空間,所以指標變數中位址可以任意改變,但是系統沒有陣列變數分配儲存空間,當系統編譯後所有出現陣列名的地方都會被替換成該陣列的首位址,所以你不可改變陣列變數的指向。
六.指標與字串
以前我們是先定義字串,再將字串位址給指標:
char name = "sl"; char *p = name;
而我們還可以:
char *p1 = "sl";
兩種方式的區別: 第乙個定義的是字串變數;第二個定義的是字串常量,你不能改變他;
七.指標與函式
1.返回指標的函式
指標也是c語言中的一種資料型別,因此乙個函式的返回值肯定可以是指標型別的
返回指標的函式的一般形式為:型別名 * 函式名(引數列表)
2.函式指標
定義:指向函式的指標稱為函式指標,也就存放函式位址的變數就是函式指標變數;
格式: 返回值型別 (*函式指標名稱) (引數型別,引數型別)
例如: int sum(int a,int b) 指標 int (*point)(int,int)
初始化; point = sum;
作用:將函式作為引數在函式間傳遞
八.指標與結構體
定義:結構體指標變數的定義形式:
struct
結構體名稱 *指標變數名
例如: struct person;
struct person stu = ;
struct person *p ; 定義了乙個結構體指標;
p = &stu; 將結構體位址給指標;
訪問成員:
stu.age stu.name
(*p).age (*p).name
p->age p->name 最常用的方式
----------------------------
-asp.net+unity開發、.net培訓、期待與您交流!
-------------------------
結構體指標,C語言結構體指標詳解
結構體指標,可細分為指向結構體變數的指標和指向結構體陣列的指標。前面我們通過 結構體變數名.成員名 的方式引用結構體變數中的成員,除了這種方法之外還可以使用指標。前面講過,student1 表示結構體變數 student1 的首位址,即 student1 第乙個項的位址。如果定義乙個指標變數 p 指...
C語言 結構體指標
指向結構體物件的指標變數即可以指向結構體變數,也可指向結構體陣列中的元素。指標變數的基型別必須與結構體變數的型別相同。如 struct student pt pt可以指向struct student型別的變數或陣列元素。典例 通過結構體變數的指標變數輸出結構體變數成員中的成員的資訊。解題思路 1 怎...
C語言結構體指標
在使用指標值得注意的是對結構體指標的使用 例如 struct bookmessage 定義乙個指標引數的結構體 void importmssage bookmessage pbook 那麼如何用該指標輸出該資訊呢?pbook name vs pbook id?void importmssage bo...