所謂指標,就是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。這裡介紹一小部分;
首先,介紹聲名指標變數:
int p; //乙個整形數p;
int *p; //乙個指標p;
int p[50]; //乙個陣列p,其中的所有資料均為int;
int *p[50]; //乙個陣列p,其中的資料型別均是指標;
這裡&是取位址運算子,*是間接運算子。
&a 的運算結果是乙個指標,指標的型別是a 的型別加個*,指標所指向的型別是a 的型別,指標所指向的位址嘛,那就是a 的位址。
*p 的運算結果就五花八門了。總之*p 的結果是p 所指向的東西,這個東西有這些特點:它的型別是p 指向的型別,它所占用的位址是p所指向的位址。
例如以下程式:
#includeint main()
}
首先,輸入整型數a,然後,再將a的值賦給指標p,特別注意這裡一定要都是指向位址的變數才對;最後,再將b由*p+5運算得出,執行的結果就是把a的值加上5;
乙個簡單的換數:
#includevoid swap(int *p1,int *p2)
int main()
算出來執行結果了嗎?沒錯就是q-p=15,這裡的p和q分別指向的是a[3]和[18]的位址,即為p=3,q=18;在這裡a[3]和a[18]都是陣列啊中的乙個整型資料,在對其取位址&a[3],&a[18],意為在給指標p、q賦值運算,延伸一下如果再對p做運算p+1,則為將p移向下乙個位址,即為&a[4],而*p也就是a[4];
下面來看給乙個陣列逆序:
#includevoid invert(int *p,int n)
}void main()
; int i,*p;
void invert();
p=a; //把陣列a賦給指標p,陣列不用取位址&;
for(i=0;i<10;i++)
printf("\n");
invert(p,10); //代入函式invert,代入指標p,不要加*,就像把陣列代入函式中一樣;
for(i=0;i<10;i++)
}
執行結果如下:可以看到還是很耗時間的。
參見更多指標的詳細用法及問題說明請見:c語言指標詳解(經典,非常詳細)
C 語言 指標簡介
指標是 c 語言中乙個重要的概念,是 c 語言中乙個重要特色,也是 c 語言的精髓 靈魂所在。正確而靈活的運用它,可以有效地表示複雜的資料結構 能動態分配記憶體 能方便地使用字串 有效而方便地使用陣列。掌握指標的應用,可以使程式簡潔 緊湊和高效。大約 40 的選擇題與指標有關。對指標的掌握程度可以反...
C語言基礎 指標基礎
最小儲存單位 bit 即 0 1 基本儲存單位 byte 1byte 8bit 注 計算機訪問的資料是byte位數定義變數 分配儲存空間 引用變數 通過變數名引用變數的內容即變數空間的首位址 為常量,即 變數名 專門儲存位址常量的變數型別 變數名所有指標變數均分配4byte的儲存空間 與其他變數相同...
C語言指標基礎
c語言指標 前導程式 1 include2 3 4 5 void change int 6 7 int main 8 9 20 21 22 23 void change int n 24 25 30 31 一 基本知識點 int a 10 int p 定義乙個int型別的指標 p a 指標變數p指向...