標籤:style blog color 使用 io 資料 問題 ar
C語言學習寶典(4)
指標:可以有效表示複雜的資料結構,能動態分配動態空間,方便的使用字串,有效使用數組,能直接處理記憶體單元
不掌握指標就沒有掌握C語言的精華
地址:系統為每一個變數分配一個記憶體單元,記憶體區的每一個位元組有一個編號,這就是“地址”
指標的定義; 基底類型 * 指標變數名
例如 int *pointer;
可以使用指派陳述式使一個指標變數得到另一個變數的地址,從而使它指向一個該變數。
例1 通過指標變數訪問整形變數
/******************* 功能:通過指標變數訪問整形變數*********************/#include <stdio.h>void main(){ int a,b; int *pointer1,*pointer2; a=100;b=10; pointer1=&a; pointer2=&b; printf("%d %d\n",a,b); printf("%d %d\n",*pointer1,*pointer2);}
例2 對於a,b兩個整數,按先大後小的順序輸出
/******************* 功能:利用指標函數比較兩個數的大小,輸出*******************/#include <stdio.h>void main(){ void swap(int *p1,int *p2); int a,b; int *pointer1,*pointer2; scanf("%d%d",&a,&b); pointer1=&a; pointer2=&b; if(a<b) swap(pointer1,pointer2); printf("%d\n%d\n",a,b);}void swap(int *p1,int *p2){ int temp; temp=*p1; *p1=*p2; *p2=temp;}
例3 Hanoi(漢諾塔)古代有一個梵塔,塔內有3個座A,B,C.開始A上有64個盤子,盤子大小不等,大的在下,小的在上邊,有一個老和尚想把64個盤子從A移動到C座上,在移動的過程中始終保持大盤在下,小盤在上邊。
/******************** 功能:遞迴解決Hanoi塔問題********************/#include <stdio.h>void main(){ void Hanoi(int n,char one,char two,char three); int m; printf("Input The Number Of The Diskes:\n"); scanf("%d",&m); printf("The Step Of Moving %d Diskes:\n",m); Hanoi(m,‘A‘,‘B‘,‘C‘);}void Hanoi(int n,char one,char two,char three){//將n個盤從第一座移動到第二座再移動到第三座 void move(char x,char y); if(n==1) move(one,three); else { Hanoi(n-1,one,three,two); move(one,three); Hanoi(n-1,two,one,three); }}void move(char x,char y){ printf("%c-->%c\n",x,y);}