Transcript Pointer

資料結構
Pointer
指標
授課老師:蕭志明
1
©2005 NTUST All rights
reserved.
資料結構
指標概說
 指標是一個用來指示資料存在
於記憶體中的位址標示器.
由指標的運用裡,使我們瞭解到
資料與位址間的關係,進而對記
憶體配置有很大的幫助.
2
資料結構
指標的基本觀念
在C語言中,若某變數所含的是
一 個 記 憶 體 位址,此 變 數 稱 為 指
標 變 數。
3
資料結構
指標宣告的注意事項
1. ptr 為 指 標 變 數 , ptr 代 表 一 個 位
址,
2. *ptr 代 表 此 位 址 內 的 資 料 .
3. ptr 所 指 向 此 位 址 之 變 數 型 態 為
整 數 ( int ) .
4. 指 標 變 數 宣 告 的 關 鍵 字 為 " * " ,
而指標變數的資料型態也分為
整 數 ( int ) , 浮 點 數 ( float ) , 字 元
( char ).
5. "&" 為另一重要符號,"&"為一個特殊
運算子,目的為傳回運算元之位址
6. 為什麼scanf() 中之所有引數變數一定
要加上"&"符號???……….
4
資料結構
Example
5
資料結構
指標與函數間的關係
關 於 函 數 呼 叫 的 方 式 中 , Call by
value 的 引 數 傳 遞 方 式 , 被 呼 叫 函
數不能直接更改呼叫函數中的
變數,但如果是以指標當作函數
的 引 數 ( Call by reference ) , 則 上
述的狀況均迎刃而解,而且也不
受 函 數 返 回 值 ( return ) 只 能 有 一
個的影響.
6
資料結構
Example
#include < stdio.h >
change(x,y)
int *x,*y;
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
void main(void)
{ int m=3,n=4;
printf(" m = %d n= %d \n\n",m,n);
printf(" m = %d n= %d \n\n",m,n);
change(&m,&n);
printf(" m = %d n= %d \n",m,n);
}
7
資料結構
指標與陣列的關係
我們可以將指標與陣列的關係
來做一對比.例如:有一整數陣
列 名 為 array , 其 陣 列 大 小 為 五 個 ,
其 內 容 分 別 是 1,2,3,4,5 . For
example: int array[5]={ 1,2,3,4,5 };
8
資料結構
9
資料結構
10
資料結構
11
資料結構
12
資料結構
指標與結構的關係
 指標可以指向一個相關之結構變數。如
欲由此指標存取結構變數之項目資料時,
其格式如下:
13
資料結構
14
資料結構
練習
#include < stdio.h >
void main(void)
{
int x=10,z=3;
int *y;
*y=5
z = z + 1;
x = x + *y;
printf(" x = %d\n", x);
printf("*y = %d\n",*y);
printf(“z = %d\n", z);
y = &x;
printf(" y = %x\n", *y);
&z = y;
printf(" z = %x\n", z);
}
15