1. 程式人生 > >C語言結構體指標的使用方法

C語言結構體指標的使用方法

1.首先定義一個結構體,給它取別名:

typedef struct node{

struct node * next;//指向下一節點

int data;//資料域

}pnode,*linklist;;//別名與指標名

2.定義結構體指標與指標變數,給出幾種不同的定義方式

struct node *a,b;

pnode *c,d;

linklist  p;

他們別名的關係如下:

linklist=struct node *=pnode*;

pnode=struct node;

這裡的a即指向結構體node的指標,b為結構體變數。兩者之間關係為:

a=&b;

其他定義方式之間關係為(這裡指的是類別之間關係):

c=&d;  c=&b

d=b;

p=a;  p=c; p=&b;    p=&d

像這之中c和p也是指向結構體node的指標。

3.結構體成員的訪問:

指標可以用 "->" 來訪問成員變數,結構體物件用  "." 來訪問,指標也可以用 "." 來訪問,

(1)結構體物件訪問成員變數時:

b.data=2;

(2)指標的訪問成員變數方式:

a->data=2;

(*a).data=2;

4.函式傳遞結構體指標和變數的方法

因為指標指向結構體的首地址,假設函式為:

int sum(struct node *a,struct node *p);

傳遞時:

指標為:sum(a,c);

結構體變數為:sum(&b,&d);

以上就是C語言結構體指標、變數與其對應關係,以及如何使用的方法了。

相關推薦

C語言結構指標的使用方法

1.首先定義一個結構體,給它取別名: typedef struct node{ struct node * next;//指向下一節點 int data;//資料域 }pnode,*linklist;;//別名與指標名 2.定義結構體指標與指標變數,給出幾種不同的定

結構指標C語言結構指標詳解

結構體指標,可細分為指向結構體變數的指標和指向結構體陣列的指標。 指向結構體變數的指標 前面我們通過“結構體變數名.成員名”的方式引用結構體變數中的成員,除了這種方法之外還可以使用指標。前面講過,&student1 表示結構體變數 student1 的首地址,即 student1 第一個項的地址

c語言結構指標初始化

今天來討論一下C中的記憶體管理。 記得上週在飯桌上和同事討論C語言的崛起時,講到了記憶體管理方面 我說所有指標使用前都必須初始化,結構體中的成員指標也是一樣 有人反駁說,不是吧,以前做二叉樹演算法時,他的左右孩子指標使用時難道有初始化嗎 那時我不知怎麼的想不出理由,雖然我還

C語言 結構指標需要申請記憶體但函式定義指標不需要申請

在函式定義指標或者變數已經為指標本身和變數本身分配了記憶體所以用指標指向一個已經定義的變數時不需再分配記憶體 但是資料結構中用指標指向結構體時只為指標本身分配了記憶體如果要對結結構體填入內容就要分配一個結構體大小的記憶體才可以 但只自己分配的記憶體一定要養成

【轉載】c語言結構指標初始化

轉載來自:http://www.cnblogs.com/losesea/archive/2012/11/15/2772526.html   今天來討論一下C中的記憶體管理。 記得上週在飯桌上和同事討論C語言的崛起時,講到了記憶體管理方面 我說所有指標使用前都必須初始化

c語言結構指標成員初始化

今天遇到一個奇怪的問題,錯誤提示段錯誤,明顯是指標操作有問題。找了N久才把問題定位在自定義的連結串列上。next指標一直有資料。 struct S{ void (*call)(); S *next; };上面一個簡單的結構體,在程式中:

C語言--結構指標需要malloc

如果定義一個結構體型別的普通變數,可以不malloc動態申請記憶體,CPU會為這個結構體變數分配記憶體    如果定義的是一個結構體的指標,CPU會為這個指標開闢記憶體,但是此時這個大小是4(如果是32位的CPU的話),所以這個空間不足以儲存結構體的資料成員,就會引發錯誤,此

c語言結構指標結構各種噁心巢狀】

#include<stdio.h> struct s1 {     float a;     struct     {         int ba;         int bb;  

C語言-結構指標結構巢狀

C語言中結構體是一種構造型別,和陣列、基本資料型別一樣,可以定義指向該種類型的指標。結構體指標的定義類似其他基本資料型別的定義,格式如下 struct 結構體名 * 指標名; 比如: struct person{char[20] name; int age;};//先定義一

C語言結構字節對齊簡單計算方法

最大的 一個數 數據類型 double short 位操作 結構體字節對齊 根據 struct 1.在C語言裏面每一種數據類型都有字節對齊比如在32位操作系統下:整型的自身對齊數就是 4 字節,字符型就是 1 字節,double就是 8 字節。 但是結構體的計算方式就和普通

C語言 結構結構指標用法總結

在C語言開發中,結構體用到的機會很多。所謂結構體,就是定義一種裡面包含多種元素的變數。 我們來看一個簡單的例子。比如你想定義一個書名列表然後為每本書建立書名和作者作為書的資訊。結構體變數定義如下: struct book { char name[30]; ch

C語言結構初始化的四種方法

定義 struct InitMember { int first; double second; char* third; float four; }; 方法一:定義時賦值 struct InitMember t

C語言結構定義函式指標的簡單高效的使用例子

對於大型專案來說,struct的使用會使整個程式碼更加簡約,閱讀起來和寫起來都更加簡便,以後就要多嘗試這種用法了。下面是一個簡單例子,可以參考一下。 #include <stdio.h>

C語言結構(struct)常見使用方法

今天覆習一下struct,順便挖掘一下以前沒注意的小細節: 基本定義:結構體,通俗講就像是打包封裝,把一些有共同特徵(比如同屬於某一類事物的屬性,往往是某種業務相關屬性的聚合)的變數封裝在內部,通過一定方法訪問修改內部變數。 結構體定義: 第一種:只有結構體定義

C語言結構及typedef關鍵字定義結構別名和函式指標的應用

結構體(struct)的初始化 struct autonlist { char *symbol; struct nlist nl[2]

C-C++語言結構中定義另一個結構指標的經驗

本文進行討論的是,在Linux中,C/C++語言的結構體的使用情況。一般情況下,結構體的使用還是相對比較簡單的,它攜帶的一類物體的某一些屬性, 比如 struct person { int age; int height; //... }; 這個結

C語言結構初始化和結構指標

結構體初始化 #include <stdio.h> //結構體的宣告和定義方法 //1.宣告和定義分離 struct weapon{ char name[20]; in

第22節 C語言結構結構巢狀、結構指標結構陣列的程式碼實現

結構體 #include <stdio.h> //第一步 struct Student { //學號 int no; //姓名 char name[20]; //性別 char

C語言結構中的函式指標與函式

1、函式指標 一般的函式指標可以這麼定義: int(*func)(int,int); 表示一個指向含有兩個int引數並且返回值是int形式的任何一個函式指標. 假如存在這樣的一個函式: int add2(int x,int y) { return x+y;

C語言結構裡的成員陣列(長度為0)和指標---from coolshell

單看這文章的標題,你可能會覺得好像沒什麼意思。你先別下這個結論,相信這篇文章會對你理解C語言有幫助。這篇文章產生的背景是在微博上,看到@Laruence同學出了一個關於C語言的題,微博連結。微博截圖如下。我覺得好多人對這段程式碼的理解還不夠深入,所以寫下了這篇文章。